sqlserver2005和mysql_sqlserver2005 锁升级的原因和应对办法

锁升级(escalate)

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

锁升级的时机:

总之,锁的数量达到一定值之后进行升级。总体值和单事物单表(索引)的两种计数方式。另外一种是以内存占用量为计数方式。一次不成功,间隔一定树木后再次试图升级。

减少锁升级:

1.优先使用行版本控制

2.跟踪标志1211。DBCC TRACEON 1211, -1

3. 跟踪标志1224

4.加大阀值,减少锁升级的可能。In many cases, it is desirable to control the escalation threshold at the object

level

sp_configure 'locks', 10000;

GO

RECONFIGURE;

GO

参考:

在大多数情况下,数据库引擎使用默认的锁定和锁升级设置进行操作时提供的性能最佳。如果数据库引擎实例生成大量锁并且频繁进行锁升级,请考虑通过下列方法减少锁定:

对于读取操作,使用不会生成共享锁的隔离级别。

当 READ_COMMITTED_SNAPSHOT 数据库选项为 ON 时,使用 READ COMMITTED 隔离级别。

使用 SNAPSHOT 隔离级别。

使用 READ UNCOMMITTED 隔离级别。此隔离级别只能用于能对脏读进行操作的系统。

使用 PAGLOCK 或 TABLOCK 表提示,使数据库引擎使用页、堆或索引锁而不是行锁。但是,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值