2005年09月17日

ロック動作の制御

トランザクション分離レベル → セッションレベル
  SET TRANSACTION ISOLATION LEVEL 分離レベル名
    → レベル名はスペースあり
 
ロックヒント → テーブルレベル
  SELECT ... WITH (テーブルレベル名
    → レベル名はスペースなし
 
READUNCOMMITTED
NOLOCK
READ UNCOMMITTED
READCOMMITTED READ COMMITTED
REPEATABLEREAD REPEATABLE READ
SERIALIZABLE
HOLDLOCK
SERIALIZABLE
ROWLOCK 行ロック
PAGLOCK ページロック
TABLOCK テーブルロック
TABLOCKX テーブル排他ロック
READPAST ロック行をスキップ
READ COMMITTED レベル + 行ロック + SELECT ステートメント
UPDLOCK テーブル読み出しの間、共有ロックの代わりに更新ロックを使用
XLOCK 排他ロック (ページロックまたはテーブルロック → 自動選択)
  セッションレベルの制御に優先
 
なるべくセッションレベルよりもテーブルレベルでロック制御を行うようにする
 
ロックのタイムアウト
 

 
行ロックをかけた場合でも、テーブルスキャンを行うような更新ロックを使った SELECT ステートメントを実行するとロック待ちが発生する
    ← インデックスがロックされるため
  index (インデックス名) オプションをつけることで目的の条件部分のみにロックをかける
posted by w@ko at 17:24|  ・SQL Server ノート | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。