SQL Serverの分離/ロックを理解しようとしています。私が読んでシナリオを以下しているREAD COMMITTED分離レベルでロックを保持/解放するとき
は、我々は、テーブルを持っている分離レベル(デフォルト)
を犯しました。
選択が 共有ロックを解雇されたとき、私はを理解MSDNから今
create table Transactions(Tid int,amt int)
with some records
insert into Transactions values(1, 100)
insert into Transactions values(2, -50)
insert into Transactions values(3, 100)
insert into Transactions values(4, -100)
insert into Transactions values(5, 200)
が他のトランザクションは(ダーティリードの回避)のデータを変更することはできませんので、撮影します。..ドキュメントは、行レベルの話、ページレベル、テーブルレベルのロック。私は私が理解したいことは、共有ロックを取得している(行、ページ、テーブル)されるだろう時間の何期間にある以下のscenarion
Begin Transaction
select * from Transactions
/*
some buisness logic which takes 5 minutes
*/
Commit
考えます。
ステートメントselect * from Transactions
が実行されている場合、またはCOMMITに達するまで5分以上にわたって取得される場合にのみロックが取得されます。
ローロックの代わりにテーブルロックを取得する場合、実装の詳細は重要です。 – matao
ケンドラの小さなリンクが壊れています – TinyTheBrontosaurus