Lock-request timeouts under concurrent DML: SQL Server Database Engine lock escalation
0 reputation · 14 Aug 2020, 18:02 UTC
Lock escalation in the SQL Server Database Engine converts many row or page locks into a single table-level lock, a documented behavior that can increase blocking and latency when concurrent sessions access the same table. The exact lock count or memory threshold that triggers escalation is not published as a fixed constant and can vary by SQL Server version, build, edition, and memory pressure.
Because the escalation trigger is dynamic and internal, latency that appears only under concurrent requests can be difficult to separate from ordinary contention. Escalation attempts may also be delayed or retried when incompatible locks are held by other sessions, producing intermittent waits that do not occur in single-session testing.
Snapshot isolation reduces reader-writer blocking but does not prevent writer-side lock escalation and increases tempdb usage. Escalation behavior can also differ between rowstore and clustered columnstore indexes and across database compatibility levels.
Given that no fixed escalation threshold is documented, how can an administrator confirm whether lock escalation is contributing to load-dependent latency? What monitoring approach distinguishes escalation-induced blocking from other concurrent DML contention? Is it appropriate to change the per-table LOCK_ESCALATION setting before verifying escalation activity in the specific environment?