システム開発 備忘録



SQLサーバー ロック

*** *** *** *** ***


ロック

--テーブルロック
SET LOCK_TIMEOUT 1000/*ミリ秒単位でロック待ち時間を指定できる*/
SELECT * from TABLE1 WITH(TABLOCKX)

(TABLOCKX)は(TABLOCK, XLOCK)でも同じようだが、後者を使用するとデッドロックになるらしい

以下はMSDNより抜粋↓

TABLOCK
テーブルにロックを使用し、ステートメント終了まで保持することを指定します。データの読み取り中は、共有ロックが使用されます。データの変更中は、排他ロックが使用されます。HOLDLOCK も指定してある場合は、共有テーブル ロックがトランザクション終了まで保持されます。

インデックスのないテーブルにデータをインポートするため、OPENROWSET 一括行セット プロバイダで TABLOCK を使用すると、対象テーブルへのデータ読み込みを、ログ記録とロックとを最適化して、複数のクライアントで同時に行うことができます。

TABLOCKX
トランザクションが完了するまでテーブルに排他ロックを使用することを指定します。

UPDLOCK
更新ロックを使用することと、これをトランザクション終了まで保持することを指定します。

XLOCK
排他ロックを使用することと、これをトランザクション終了まで保持することを指定します。ROWLOCK、PAGLOCK、または TABLOCK と組み合わせて指定すると、排他ロックは適切な粒度レベルに適用されます。




Copyright (C) 2009- station-t.com All Rights Reserved , Link Free