SQL Server - PAGLOCK表提示会导致高碎片吗?

时间:2012-12-31 21:57:46

标签: sql-server sql-server-2008

我们有一个应用程序,我们可以解析/加载大量消息并将它们加载到SQL Server 2008 R2实例中。我们正在使用TVP来传递能够实现大吞吐量的集合,但是它也导致我们遇到相当多的死锁。我们最近将PAGLOCK提示添加到我们遇到问题的区域,并解决了大部分问题。

我担心这会造成大量碎片吗?那是对的吗?我们也正在研究一些重新设计选项,但是想要了解使用PAGLOCK提示的影响。

任何建议/意见将不胜感激。

谢谢,

取值

2 个答案:

答案 0 :(得分:3)

PAGLOCK提示与碎片无关。碎片与表上的索引相关。看起来你没有在桌面上有正确的索引,但是有重插入。

PAGLOCK是一个与并发相关的表提示。请参阅SQL Server联机丛书:

答案 1 :(得分:3)

PAGLOCK不会影响碎片。如果插入新行导致页面拆分,则会发生碎片,因为新行不再适合正确的页面,因此与所使用的锁定类型无关。如果聚簇索引键不是像标识一样增加的值,则页面拆分很常见。出于同样的原因,它也会出现在非聚簇索引中,尽管频率较低,因为更多的行往往适合页面。

这意味着您无法避免具有多个索引和高插入频率的表上的碎片。因此,您应该根据实际的碎片频繁重新组织/重建索引。