■13722 / inTopicNo.4) |
Re[1]: SELECT文の共有ロックについて |
□投稿者/ やじゅ (86回)-(2008/02/03(Sun) 11:47:10)
|
■No13718 (NORTH さん) に返信 > > 質問@ > 上のSELECT文は結果が返ってきて下は返ってこないのは > なぜですか?上は検索キーがプライマリーキーだから?
下はインデックスにより行ロックがかかっているため。 上はプライマリーキーのみだから読取り可能 > 質問A > 下のSELECT文実行後のテーブルの状態は > 社員コード'0001'と'0002'は共有ロック状態ですか? > もしそうだとすればなぜですか? インデックスにより行ロックがかかっているため。
確かめてないが、下記によりロック行が分かるらしい、間違ってるかも(^^; select * from 社員マスタ with (NOLOCK) where 社員コード,部署コード not in (select 社員コード,部署コード from 社員マスタ with (READPAST))
> 質問B > マネージメントスタジオでテーブルのインデックスを > 作成するときオプションに > "レコードロックする"というチェックボックスがありますが > これはどういう意味ですか?ここにチェックをいれないと > アクセスしたときテーブルロックしちゃいますか?
チェックをオフにすると、テーブルロックしちゃいます。
http://msdn2.microsoft.com/ja-jp/library/ms186872.aspx [インデックスへのアクセス時に行ロックを使用する] 行レベルのロックを可能にします。 このチェック ボックスをオフにした場合、インデックスで行レベルのロックは使用されません。 > 質問C > レコードのロックとインデックスは密接に関係してますか。 > 詳しい方は、説明お願いします。 > インデックスは密接に関係しています。
詳しくは、はつねさんのリンク先でいいかと思います。 http://www.atmarkit.co.jp/fdotnet/entwebapp/entwebapp09/entwebapp09_01.html
|
|