Category: Wait Types
-
LCK_M_SIX Wait Type in SQL Server
LCK_M_SIX is a wait to acquire a Shared With Intent Exclusive (SIX) lock. SIX is a combination lock: the session wants to read the whole table (shared) while also modifying some rows within it (intent exclusive). SQL Server uses it for scan-then-update patterns, where a query reads broadly but writes selectively. You will see this…
Written by
-
LCK_M_SCH_S Wait Type in SQL Server
LCK_M_SCH_S is a wait to acquire a Schema Stability (SCH-S) lock. Every query takes SCH-S locks on the objects it touches, during compilation and execution, to guarantee the table’s structure does not change underneath it. SCH-S is the most compatible lock in the engine; it coexists with everything except one thing: a Schema Modification (SCH-M)…
Written by
-
LCK_M_SCH_M Wait Type in SQL Server
LCK_M_SCH_M is a wait to acquire a Schema Modification (SCH-M) lock. DDL needs this lock to change an object’s structure: ALTER TABLE, offline index rebuilds, partition switches, truncates, and drops all take SCH-M. It is the least compatible lock in the engine; it conflicts with every other lock, including the Schema Stability locks that every…
Written by
-
LCK_M_RX_X Wait Type in SQL Server
LCK_M_RX_X is a wait to acquire an Exclusive Range lock: an exclusive lock on a key value plus an exclusive lock on the range between it and the previous key. Like all range locks it only exists under SERIALIZABLE isolation, where writers must lock the gaps between keys so no other transaction can insert a…
Written by
-
LCK_M_RS_U Wait Type in SQL Server
LCK_M_RS_U is a wait to acquire an Update lock on a key together with an Update Range lock on the gap between it and the previous key. It belongs to the serializable range-lock family: SQL Server takes it when a serializable transaction searches a range it intends to update, using update-mode semantics to stay deadlock-friendlier…
Written by
-
LCK_M_RS_S Wait Type in SQL Server
LCK_M_RS_S is a wait to acquire a Range Shared lock: a shared lock on a key value plus a shared lock on the range between it and the previous key. Range locks only exist under SERIALIZABLE isolation, where SQL Server must prevent phantom rows from appearing in a range a transaction has read. Seeing this…
Written by
-
LCK_M_RIn_NL Wait Type in SQL Server
LCK_M_RIn_NL is a wait to acquire an Insert Range lock with a NULL lock on the key itself. It appears when a session under SERIALIZABLE isolation wants to insert a new key: SQL Server locks the range between the neighbouring keys to keep the insert phantom-safe, while the NULL component on the key is an…
Written by
-
LCK_M LOW_PRIORITY and ABORT_BLOCKERS Wait Types in SQL Server
Every lock mode in SQL Server has two extra wait type variants: LCK_M_<mode>_LOW_PRIORITY and LCK_M_<mode>_ABORT_BLOCKERS, 46 wait types in all (LCK_M_S_LOW_PRIORITY, LCK_M_SCH_M_ABORT_BLOCKERS, and so on). They exist for the WAIT_AT_LOW_PRIORITY option on online index operations and partition switches (SQL Server 2014 onward), which lets DDL wait politely instead of queuing the whole world behind its…
Written by
-
LCK_M_IX Wait Type in SQL Server
LCK_M_IX is a wait to acquire an Intent Exclusive (IX) lock. When SQL Server modifies a row, it first stamps IX locks on the page and table above it, signalling that exclusive locks exist lower down. This wait means a writer cannot even place that intent marker, because another session holds an incompatible lock at…
Written by
-
LCK_M_IS Wait Type in SQL Server
LCK_M_IS is a wait to acquire an Intent Shared (IS) lock. Before SQL Server takes a shared lock on a row or page, it places IS locks on the table and page above it, marking its intention so other sessions know readers are active lower down. This wait means even that lightweight intent marker is…
Written by
Blog Categories
- Backups & Recovery (6)
- High Availability (HA) (6)
- Installation & Configuration (12)
- Labs (1)
- Maintenance (3)
- Monitoring (20)
- Performance Tuning (8)
- Security (Encryption & Permissions) (5)
- T-SQL Fundamentals (8)
- Troubleshooting (6)
- Wait Types (201)
Latest Posts
- When Shrinking Temp DB Just Won’t Shrink
- SQL Server Replication Monitoring Scripts
- SQL Server Wait Types Library
- PARALLEL_REDO_WORKER_SYNC Wait Type in SQL Server
- PARALLEL_REDO_WORKER_WAIT_WORK Wait Type in SQL Server
- PERFORMANCE_COUNTERS_RWLOCK Wait Type in SQL Server
Blog Tags
Always On Availability Groups (4) Certificates & Encryption (1) Database Backups & Recovery (10) Database Maintenance (6) DBA Tools (29) Performance Troubleshooting (9) PowerShell (4) Query Behaviour (4) Schema Changes (1) SQL Agent (1) SQL Interview Questions (1) SQL Scripts (23) SQL Server Administration (11) SQL Server Configuration (7) SQL Server Errors (5) SQL Server High Availability (4) SQL Server Internals (4) SQL Server Management Studio (SSMS) (7) SQL Server Monitoring (10) SQL Server Networking (9) SQL Server Replication (2) SQL Server Security (8) SQL Server Versions (2) Storage and Capacity (14) T-SQL (9) Transaction Logs (8) Troubleshooting (14) Windows Server (4)