SQL Serverはいつロックを取得しますか?


10

ここにあるSQL Serverの分離レベルのリストには、トランザクション内で取得された書き込みロックは、トランザクションが終了するまで保持されることが記載されています。ただし、これらのロックがいつ取得されるかについては触れられていません。

ロックはデフォルトでトランザクションの開始時に取得されますか、それとも必要なときに取得されますか?後者が当てはまる場合、Xのロックが保持される時間を最小限に抑えるために、大規模なトランザクションでは書き込み操作をできるだけ遅く実行する方が有利でしょうか。

回答:


5

ロックはデフォルトでトランザクションの開始時に取得されますか、それとも必要なときに取得されますか?

ロックは、読み取りまたは書き込みが発生する直前に取得されます。ストレージエンジンによって選択されたロックの粒度に応じて、行、ページ、パーティション、またはオブジェクト(テーブル)レベルでロックを取得できます。

後者が当てはまる場合、Xのロックが保持される時間を最小限に抑えるために、大規模なトランザクションでは書き込み操作をできるだけ遅く実行する方が有利でしょうか。

はい、並行トランザクションで使用されている分離レベルによっては、並行性にとって有利になる場合があります。

関連読書:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.