ロックヒントとトランザクション分離レベルの組み合わせによる読み取りのWaitパターン
Sqlserverでは、Select文でロックヒントを記述することができる。
■ロックヒント
http://msdn.microsoft.com/ja-jp/library/ms177634.aspx
トランザクション分離レベルとヒントの組み合わせによって、
クエリのブロック状況が異なるので、注意が必要。
とくに、ロックヒントをつけないもの(表中では「ヒントなし」と表記)
をブロックしてしまうパターンは影響が大きいので注意が必要。
ロック側分離レベル | ロック側クエリヒント | 非ロック(負け)側分離レベル | 非ロック(負け)側クエリヒント | 非ロック(負け)側動作 |
---|---|---|---|---|
serializable | Xlock | serializable | Xlock | WAIT |
UpdLock | WAIT | |||
ヒントなし | WAIT | |||
Nolock | 読み取り可能 | |||
read committed | Xlock | WAIT | ||
UpdLock | WAIT | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read uncommitted | Xlock | WAIT | ||
UpdLock | WAIT | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
UpdLock | serializable | Xlock | WAIT | |
UpdLock | WAIT | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read committed | Xlock | WAIT | ||
UpdLock | WAIT | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read uncommitted | Xlock | WAIT | ||
UpdLock | WAIT | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
ヒントなし | serializable | Xlock | WAIT | |
UpdLock | 読み取り可能 | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read committed | Xlock | WAIT | ||
UpdLock | 読み取り可能 | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read uncommitted | Xlock | WAIT | ||
UpdLock | 読み取り可能 | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read committed | Xlock | serializable | Xlock | WAIT |
UpdLock | WAIT | |||
ヒントなし | WAIT | |||
Nolock | 読み取り可能 | |||
read committed | Xlock | WAIT | ||
UpdLock | WAIT | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read uncommitted | Xlock | WAIT | ||
UpdLock | WAIT | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
UpdLock | serializable | Xlock | WAIT | |
UpdLock | WAIT | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read committed | Xlock | WAIT | ||
UpdLock | WAIT | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read uncommitted | Xlock | WAIT | ||
UpdLock | WAIT | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
ヒントなし | serializable | Xlock | 読み取り可能 | |
UpdLock | 読み取り可能 | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read committed | Xlock | 読み取り可能 | ||
UpdLock | 読み取り可能 | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read uncommitted | Xlock | 読み取り可能 | ||
UpdLock | 読み取り可能 | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read uncommitted | Xlock | serializable | Xlock | WAIT |
UpdLock | WAIT | |||
ヒントなし | WAIT | |||
Nolock | 読み取り可能 | |||
read committed | Xlock | WAIT | ||
UpdLock | WAIT | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read uncommitted | Xlock | WAIT | ||
UpdLock | WAIT | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
UpdLock | serializable | Xlock | WAIT | |
UpdLock | WAIT | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read committed | Xlock | WAIT | ||
UpdLock | WAIT | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read uncommitted | Xlock | WAIT | ||
UpdLock | WAIT | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
ヒントなし | serializable | Xlock | 読み取り可能 | |
UpdLock | 読み取り可能 | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read committed | Xlock | 読み取り可能 | ||
UpdLock | 読み取り可能 | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 | |||
read uncommitted | Xlock | 読み取り可能 | ||
UpdLock | 読み取り可能 | |||
ヒントなし | 読み取り可能 | |||
Nolock | 読み取り可能 |