锁升级

锁升级(escalate)
与锁的数量有关,达到阀值之后,尝试升级所有连接、所有事物的锁,直接升级到table lock,而不会小升级到page lock

监控锁升级:
可以使用 SQL Server Profiler Lock:Escalation 事件监视锁升级

具体细分:将在下列时间触发锁升级:

  • 当单个 Transact-SQL 语句在单个表或索引上获取至少 5,000 个锁时。
  • 当数据库引擎实例中的锁的数量超出了内存或配置阈值时。

    • 如果 locks 选项设置为默认设置 0,当锁对象使用的内存是数据库引擎使用的内存的 40%(不包括 AWE 内存)时,将达到锁升级阈值。用于表示锁的升级结构的长度大约为 100 个字节。此阈值是动态的,因为数据库引擎动态获取并释放内存以适应各种工作负荷。
    • 如果 locks 选项设置为非 0 值,则锁升级阈值是 locks 选项的值的 40%(或者更低,如果存在内存不足的压力)。

    数据库引擎可以为升级选择任何会话中的活动语句,而且,只要实例中使用的锁内存保持在阈值之上,每获取 1,250 个新锁,它就会为升级选择语句。

posted @ 2013-06-17 13:56  莫问前程  阅读(216)  评论(0)    收藏  举报