・ |
トランザクション分離レベル → セッションレベル |
|
⇒ |
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 (インデックス名) オプションをつけることで目的の条件部分のみにロックをかける |