0

同時トランザクション間の共通レコードへの読み取り/書き込みアクセスの可視性レベルを制御するために、JDBC 接続でトランザクション分離レベルを設定できます。データベースがこれを実装する 1 つの方法は、レコード/テーブルにさまざまな種類のロックを配置することです。

しかし、データベースがこれらのトランザクション レベルを実装する他の方法はありますか?

4

1 に答える 1

0

データベース管理システムの設計に関する多くの非常に優れた本で読むことができる理論的な内容については、あまり深く掘り下げたくありません。

ロックの取得と解放という悲観的なアプローチに従うデータベースでは、4 つの分離レベルすべてがロックを使用して実装されます。DML ステートメントが読み取りまたは書き込みを行ったデータを追跡し、トランザクションがコミットされようとしているかどうかを追跡する楽観的なアプローチが多数あります (たとえば、FOCC - フォワード オプティミスティック コンカレンシー コントロール、BOCC - バックワードなど)。これらの読み取りセットと書き込みセットを他のすべてのトランザクションに対してチェックします。これらのセットがばらばらである場合、トランザクションを書き込んでコミットできます。トランザクションの読み取りセットが別の (コミットされた) トランザクションの書き込みセットと競合する場合、データベース システムはトランザクションをロールバックする必要があります。これは、ロックを使用せずに実行できます。これらの楽観的なアプローチは十分に研究されており、パフォーマンスを大幅に低下させることなく適用できます衝突は多かれ少なかれ例外的であり、その数はほとんどありません。

于 2013-02-27T20:11:07.283 に答える