我们有一个应用程序,我们可以解析/加载大量消息并将它们加载到SQL Server 2008 R2实例中。我们正在使用TVP来传递能够实现大吞吐量的集合,但是它也导致我们遇到相当多的死锁。我们最近将PAGLOCK提示添加到我们遇到问题的区域,并解决了大部分问题。
我担心这会造成大量碎片吗?那是对的吗?我们也正在研究一些重新设计选项,但是想要了解使用PAGLOCK提示的影响。
任何建议/意见将不胜感激。
谢谢,
取值
答案 0 :(得分:3)
PAGLOCK
提示与碎片无关。碎片与表上的索引相关。看起来你没有在桌面上有正确的索引,但是有重插入。
PAGLOCK
是一个与并发相关的表提示。请参阅SQL Server联机丛书:
答案 1 :(得分:3)
PAGLOCK不会影响碎片。如果插入新行导致页面拆分,则会发生碎片,因为新行不再适合正确的页面,因此与所使用的锁定类型无关。如果聚簇索引键不是像标识一样增加的值,则页面拆分很常见。出于同样的原因,它也会出现在非聚簇索引中,尽管频率较低,因为更多的行往往适合页面。
这意味着您无法避免具有多个索引和高插入频率的表上的碎片。因此,您应该根据实际的碎片频繁重新组织/重建索引。