0

私は何年もコーディングを続けてきましたが、しばらく前にこの質問を自問しました。私はこれが私の大学で解決されるのを見たことがありません。私はこれについて非常に興味があります。

では、コード、CPUについて実際に何が起こっているのでしょうか。私はコードについて非常に興味があります。

たとえば、デスクトッププログラムを実行していて、データベースにデータを挿入している場合、上記のシナリオではどうなりますか?

MyDBConnection cn = new MyDBConnection();
cn.start();
cn.beginTransaction();
cn.insertData("INSERT INTO T_TABLE VAVLUES(1,2,'WHITE LIES')");
cn.insertData("INSERT INTO T_TABLE VAVLUES(1,3,'BLACK LIES')");

-------------------------------------------------------------------
Enery power off, application hang for whatever reason.
-------------------------------------------------------------------

cn.insertData("INSERT INTO T_TABLE VAVLUES(1,4,'VOID LIES')");
cn.commit();
cn.close();

その後はどうなりますか?何もない?

データが破損します(私が知っている人によると)?ロールバックがありますか、RAMが解放されるかハングしますか?OSはプロセスを復元しようとしますか?

誰かがこれらの事故に耐えるためのいくつかの手順を知っていますか?

4

1 に答える 1

0

サーバーごとにデュアル電源装置を実行し、他のすべての予防策(UPS、バックアップジェネレーターなど)を採用している大手銀行であっても、電源障害が発生することがあります。

そのため、データベースは、データベーストランザクションを使用するときに突然の障害に耐えるように設計されています。突然の電源障害の後でデータベースの電源がオンになると、データベースはジャーナル/トランザクションログを使用して、データベースが一貫した状態にあることを確認します。

于 2012-07-06T22:05:47.110 に答える