0

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

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

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

谢谢,

小号

4

2 回答 2

3

PAGLOCK提示与碎片无关。分片与表上的索引有关。看起来您在有大量插入的表上没有正确的索引。

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

于 2012-12-31T22:29:46.363 回答
3

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

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

于 2013-01-01T06:17:50.797 回答