SQLServer误解30天关于第二十三天锁升级的误解

SQLServer误解30天关于第二十三天锁升级的误解
23:#是错误的锁升级的行锁升级页面锁中锁升级到表锁,
错误
事实上,在SQL Server 2005和以前的版本中,页锁将直接升级到表锁。
在SQL Server 2005或SQL Server 2008中,您可以通过跟踪以下跟踪标记来更改锁升级的行为:

标志1211 -完全禁止锁升级,但锁使用的内存将被限制为动态分配内存的60%。超过此值时,由于内存溢出错误,更多的锁将失败。
锁升级是禁止1224 -,但当内存超过40%,它会自动打开锁升级。
如果标记1211和1224跟踪标志同时设置,只有标志1211将生效。

在SQL Server 2008中,还可以将表中的锁操作设置为一个单元。它可以通过改变表废话集(lock_escalation = xxx)。在这个命令中,XXX表示下列项目之一。

表:直接从行锁升级到表锁。
自动:如果有一个表分区,它将升级为分区锁,但不会进一步升级。
禁用:禁用锁升级,这并不意味着禁用表锁。就像BOL(书网上录入),我们需要表锁在执行表扫描在序列化隔离级别的条件

在2008年1月,我写了一个包含分区锁示例的博客。请参见:SQL Server 2008:分区级锁升级细节和示例。
也许你会奇怪为什么汽车不在lock_escalation=XXX设置默认值,因为现在在早期的测试中有些人发现这个选项更容易造成死锁。就像两个跟踪标签对上述锁,该选项被设置为自动也谨慎。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部