SqlServer2008实例18锁定之控制表的锁升级行为

    每个在SQL Server中创建的锁都会消耗内存资源。当锁的数量增加时,内存就会减少。如果锁的内存使用百分比超过一个特定阈值,SQL Server会将细粒度锁(页或行)转换为粗粒度锁(表锁)。这个过程称为锁升级。锁升级可以减少SQL Servcr实例占有的锁的数最,减少锁内存的使用。
    虽然细粒度锁会消耗更多的内存,但由于多个查询可以访问未锁定的行,因此也会改善并发性。引入表锁可能会减少内存的消耗,但也会带来阻塞,这是因为一条查询锁住了整个表。根据使用数据库的应用程序,这个行为可能是不希望发生的,而且你可能希望当SQL Server实施锁升级时尽量获得更多的控制。
    SQL Server 2008引入了使用ALTER TABLE命令在表级别控制锁升级的功能。现在可以从如下3个设置中选择。

  • TABLE,这是SQL Server 2005中使用的默认的行为。当设置为该值时,就在表级别启用了锁升级,不论是否为分区表。
  • AUTO,如果表已分区,则在分区级别(堆或B树)启用锁升级。如果表未分区,锁升级将发生在表级别上。
  • DISABLE在表级别删除锁升级。注意,对于用了TABLOCK提示或使用可序列化隔离级别下堆的查询时,你仍然可能看到表锁。

1.修改表的两个新的SQL Server 2008设置:

use AdventureWorks
go

ALTER TABLE person.Address
SET (LOCK_ESCALATION=AUTO)

SELECT lock_escalation,lock_escalation_desc
FROM sys.tables
WHERE name='Address'

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值