⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: LCK_M_X, LCK_M_S, and LCK_M_U Wait TypesRelated pillar: Performance & Troubleshooting ⚡LCK_M_SCH_M is DDL waiting for a schema modification lock, and while it waits, new queries on the same table queue up behind it. Something still has the table open. Run the…
⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: LCK_M_X, LCK_M_S, and LCK_M_U Wait TypesRelated pillar: Performance & Troubleshooting ⚡LCK_M_RX_X is a serializable transaction waiting to update or delete a key while also locking the gap before it, so nobody can insert into that range. It only happens under SERIALIZABLE…
⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: LCK_M_X, LCK_M_S, and LCK_M_U Wait TypesRelated pillar: Performance & Troubleshooting Is It a Problem? Treat it as two questions: is serializable intentional, and is the range being locked narrow? An update searching on an unindexed predicate under serializable range-locks everything it…
⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: LCK_M_X, LCK_M_S, and LCK_M_U Wait TypesRelated pillar: Performance & Troubleshooting ⚡LCK_M_RS_S is a serializable reader waiting to lock a key and the range before it. Seeing it at all means something runs under SERIALIZABLE or HOLDLOCK, and the first question is…
⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: LCK_M_X, LCK_M_S, and LCK_M_U Wait TypesRelated pillar: Performance & Troubleshooting Is It a Problem? It matters for the same reason as the other range lock waits: most systems never chose serializable on purpose. Concurrent inserts into the same key range under…
⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: LCK_M_X, LCK_M_S, and LCK_M_U Wait TypesRelated pillar: Performance & Troubleshooting ⚡The _LOW_PRIORITY and _ABORT_BLOCKERS lock waits come from WAIT_AT_LOW_PRIORITY on online index rebuilds and partition switches. _LOW_PRIORITY is the DDL waiting politely without blocking anyone; _ABORT_BLOCKERS means it is killing the…
⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: LCK_M_X, LCK_M_S, and LCK_M_U Wait TypesRelated pillar: Performance & Troubleshooting ⚡LCK_M_IX is a writer that cannot mark its intent on a table, because another session holds a table-wide shared or exclusive lock. Writers do not normally queue here, so when they…
⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: LCK_M_X, LCK_M_S, and LCK_M_U Wait TypesRelated pillar: Performance & Troubleshooting ⚡LCK_M_IS is a reader that cannot even mark its intent on a table, because someone holds a table-wide lock that blocks it. Intent shared is compatible with almost everything, so the…
⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: PAGEIOLATCH_SH Wait TypeRelated pillar: Performance & Troubleshooting Is It a Problem? No. Microsoft says don’t consider this state when you’re looking for user stalls, and Get Wait Statistics filters it out by default. What It Means It occurs when lazy writer…
🔧Part of the DBA-Tools Project, copy/paste SQL Server scripts and health checks.In: Storage & Capacity TempDB is shared by every database on the instance, and it’s usually the first thing to show contention under load, long before any user database does. Setup has created 1 data file per core (up to 8) since SQL Server…