SQL Server误区30日谈 第23天 有关锁升级的误区

 更新时间:2013年01月09日 21:26:34   作者:  
在SQL Server 2005和之前的版本,页锁会直接升级到表锁。在SQL Server 2005或SQL Server 2008,你可以通过如下跟踪标志改变锁升级的行为
误区 #23: 锁升级的过程是由行锁升级到页锁,再由页锁升级到表锁
错误
    实际不是,在SQL Server 2005和之前的版本,页锁会直接升级到表锁。
    在SQL Server 2005或SQL Server 2008,你可以通过如下跟踪标志改变锁升级的行为:

标志1211-完全禁止锁升级,但锁使用的内存会被限制在动态分配内存的60%,当超过这个值时,更多的锁将会伴随着内存溢出错误而失败。
  • 标志1224-禁止锁升级,但内存使用超过40%时,会自动开启锁升级
    如果标志1211和1224跟踪标志同时被设置了,只有标志1211会生效。更详细的内容请看Books Online

    在SQL Server 2008中,还可以以表为单位进行锁行为的设置,可以通过ALTER TABLE blah SET (LOCK_ESCALATION = XXX),在这个命令中XXX所代表的是下面几项中的一项:

TABLE: 直接从行锁升级到表锁。

  • AUTO:如果存在表分区,则升级为分区锁,但不会进一步升级。

  • DISABLE:禁用锁升级,这并不意味着禁用表锁,就像BOL(Books Online entry)中所说,在序列化隔离等级的条件下进行表扫描等操作时还需要表锁。

        在2008年1月的时候,我写了一篇包含分区锁例子的博文,请看:SQL Server 2008: Partition-level lock escalation details and examples
        或许你会想为什么LOCK_ESCALATION = XXX设置中AUTO不是默认值,这时因为早期测试中某些人发现这个选项更容易引起死锁。就像对于上述两个有关锁的跟踪标记一样,对于这个选项设置为AUTO也同样需要谨慎。

相关文章

  • SQL Server中使用表变量和临时表

    SQL Server中使用表变量和临时表

    这篇文章介绍了SQL Server中使用表变量和临时表的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • MS SQL Server2014链接到MS SQL Server 2000的解决方案及问题处理

    MS SQL Server2014链接到MS SQL Server 2000的解决方案及问题处理

    在大数据中,我们经常需要用到分布式数据,那么在SqlServer中,我们如何来实现呢,答案就是创建链接服务器!同版本的SqlServer之间的操作网上有很多,今天我们来探讨下不同版本SqlServer之间的链接问题。
    2014-07-07
  • SQL Server实现跨库跨服务器访问的方法

    SQL Server实现跨库跨服务器访问的方法

    这篇文章主要给大家介绍了关于SQL Server实现跨库跨服务器访问的方法,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL Server具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • SQL SERVER数据转换失败的原因及解决方法

    SQL SERVER数据转换失败的原因及解决方法

    在使用 SQL Server 数据库过程中,我们经常会遇到数据转换失败的情况,当 SQL Server 在执行查询、插入或更新操作时,如果发现数据类型不匹配或无法进行有效的转换,就会抛出转换失败的错误,本文给大家介绍了SQL SERVER数据转换失败的原因及解决方法
    2024-09-09
  • 做购物车系统时利用到得几个sqlserver 存储过程

    做购物车系统时利用到得几个sqlserver 存储过程

    最近使用asp.net+sql2000开始开发一个小型商城系统,其中涉及到得购物车功能主要是仿照淘宝实现的.
    2009-12-12
  • SQLSERVER 表分区操作和设计方法

    SQLSERVER 表分区操作和设计方法

    SQLSERVER 表分区操作和设计方法,需要的朋友可以参考下。
    2010-09-09
  • Sql Server事务语法及使用方法实例分析

    Sql Server事务语法及使用方法实例分析

    这篇文章主要介绍了Sql Server事务语法及使用方法,结合实例形式分析了Sql Server事务的概念、原理及相关使用技巧,需要的朋友可以参考下
    2019-02-02
  • SQL server服务显示远程过程调用失败的解决方法

    SQL server服务显示远程过程调用失败的解决方法

    这篇文章主要为大家介绍了SQL server服务显示远程过程调用失败的解决方法,还为大家提供了解决SQL SERVER 2008 R2配置管理器出现“远程过程调用失败”(0x800706be)错误提示的方案,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 删除重复记录

    删除重复记录

    删除重复记录...
    2006-08-08
  • SQLSERVER如何查看索引缺失及DMV使用介绍

    SQLSERVER如何查看索引缺失及DMV使用介绍

    当我们发现数据库查询性能很慢的时候,大家都会想到加索引来优化数据库查询性能,在短时间之内找到一个优化的索引组合对人脑来讲,不是一件简单的事啊,所以有了本文的出现,感兴趣的你可不要错过了哈
    2013-02-02

最新评论