Microsoft SQL Server では、READ_COMMITTED_SNAPSHOT ISOLATION を使用します。
ALTER DATABASE MyDatabase
SET ALLOW_SNAPSHOT_ISOLATION ON
ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON
セッション 1 で、プリンシパルを 4000 から 5000 に更新します。
BEGIN TRAN
Update MyTable Set Principal=5000 Where InvestorId=10
セッション 2 では、次のように言います。
Select Principal from MyTable where InvestorId=10
セッション 1 トランザクションがコミットされていないため、4000 が返されます。
READ_COMMITTED_SNAPSHOT 分離モードを使用せず、使用する場合
- READ COMMITTED ISOLATION モードの場合、セッション 2 は待機し続けます
- READ_UNCOMMITTED ISOLATION モードを使用すると、セッション 2 で 5000 が返されます (select ステートメントで nolock を使用するのと同じです)。
Oracle では、同等のコマンド セットを実行すると、デフォルトで READ_COMMITTED_SNAPSHOT 分離モードが設定されているかのように動作します。
更新が完了する前に、SNAPSHOT 分離モードが tempdb に書き込むという Microsoft の記事を読みました。
-オラクルはデフォルトでどのようにこれを実現していますか?
-ディスクにも書き込みますか? I / Oの問題が発生しますか?
- Oracle のデフォルトのロック レベルは SQL サーバーとは異なりますか?
あなたの助けと時間を前もってありがとう。