SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for 12月 19th, 2021

SQL Server でトランザクション分離レベルに READ COMMITTED を使用した主キーの検索で、必ずキーの共有ロックがとられるということではないというお話

leave a comment

インストールタイプの SQL Server のトランザクション分離レベルのデフォルトは SNAPSHOT が使用されない、READ COMMITTED が使用されており、データの検索を行った際にはロックが取得されるというのが有名な話だと思います。

N_NATIONKEY が主キーとなっているとき、次のようなクエリを実行した場合、どのようなロックがとられるでしょうか?

SELECT * FROM NATION WHERE N_NATIONKEY = '0'

 

READ COMMITTED が使用されているので「主キーに対しての検索なので主キーまたは検索対象のレコードに対して共有ロックが取得される」と考えることがあるのではないでしょうか?

実際には、「取得されるロックは状態によって変わるため、主キーによる検索でも、共有ロックが取得されないケースがある」というのが正解となります。

本投稿ではこの動作についてまとめてみたいと思います

Read the rest of this entry »

Written by Masayuki.Ozawa

12月 19th, 2021 at 9:07 pm

Posted in SQL Server

Tagged with