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 lock request.
Here is the part the naming hides: only four of the 46 are actually used: LCK_M_IS_LOW_PRIORITY, LCK_M_IS_ABORT_BLOCKERS, LCK_M_SCH_M_LOW_PRIORITY, and LCK_M_SCH_M_ABORT_BLOCKERS. The other 42 exist purely so every lock mode has matching variants. If you look one of those up, this page is the answer: it will never accumulate time.
What The Two Suffixes Mean
_LOW_PRIORITY: the DDL is waiting for its lock at low priority. Unlike a normal SCH-M request, it does NOT block new queries while it waits; the workload keeps flowing past it. Time here is your index operation being patient, by your explicit instruction._ABORT_BLOCKERS: the operation reached itsMAX_DURATIONwithABORT_AFTER_WAIT = BLOCKERSand is now killing the sessions blocking it so it can proceed.
Is It a Problem?
Time in LCK_M_SCH_M_LOW_PRIORITY is the feature working: your rebuild waits without hurting anyone. Long accumulations just mean the object never went quiet within the configured window, worth knowing when planning maintenance, not a fault. ABORT_BLOCKERS time deserves more respect: it means blockers were killed, and their transactions rolled back, by your DDL’s configuration. That should always be a deliberate choice.
What To Do
- Use
WAIT_AT_LOW_PRIORITYon production online rebuilds and partition switches; it is the polite default for busy systems. - Choose the
ABORT_AFTER_WAITaction consciously:NONE(revert to normal waiting),SELF(give up), orBLOCKERS(kill who is in the way). - If low-priority waits never get their window, find the long-running sessions holding the object and schedule around them.
How To See It
Rank waits with Get-WaitStatistics. Only the four IS/SCH-M variants will ever appear, and their timing will match your index maintenance windows.
Part of the SQL Server Wait Types Library.
Related deep dive: LCK_M_X, LCK_M_S, and LCK_M_U Wait Types.
Leave a Reply