【问题标题】:Fragmentation of one specific index is increasing too often一个特定索引的碎片化越来越频繁
【发布时间】:2016-08-05 07:29:12
【问题描述】:

我有一个大表,它有超过 10 个索引。我在一个特定索引上有碎片问题。在白天的时间里,成千上万的行被插入到这个表中,并且只有一个特定索引的碎片非常频繁地增加。其他指数还可以(可能每小时 0.01%),但这个特定指数正在以每小时 3-4% 的速度增长!在一天结束时,它可能会是 50-60%。

你能帮我找出为什么这个指数经常增加吗?

----- 填充系数

这个具体指数:0%

其他指标(增加没有问题):90%

----- 索引详情;

  • 非集群

  • 2 个索引键列:(bit 和 nvarchar(100) 类型列)

  • 1 包含列:(int) FK_OrderID(另一个表的外键)

  • 表格行数:650万

  • 表格大小:6.2 gb

和 SHOWCONTIG 表的详细信息;

  • 扫描的页面数.................................................:805566
  • 扫描的范围..........................:100877
  • 扩展开关..................................................: 108951
  • 平均每个范围的页数......................:8.0
  • 扫描密度 [最佳计数:实际计数].......:92.42% [100696:108952]
  • 逻辑扫描碎片......................:1.43%
  • 范围扫描碎片......................:19.82%
  • 平均每页可用字节数.....................:983.4
  • 平均页面密度(完整)......................:87.85%

谢谢!

【问题讨论】:

  • 这个索引的规格是什么? (索引键列数和包含列数,聚集或非聚集索引,表中总行数)
  • 你说得对,我忘了提供细节。现在我编辑了帖子,你能从那里读到吗?谢谢
  • 可能是由于 nvarchar(100)。你什么时候执行重组和重建索引?
  • @liotims 通常我每天都会这样做。这个问题昨天发生了。索引维护作业失败,我深入研究了该任务,我意识到该作业被卡住了,因为该表已被索引重建过程锁定。然后我发现问题出在这个索引上,因为我无法重建它。当我尝试重建时,它只是锁定表并且永远不会结束。然后我使用重组命令并成功!今天,到目前为止,碎片值已经超过 %20……我需要找出这个索引有什么问题。我需要它每天晚上自动重建并且没有错误。
  • MSSQL 是哪个版本的?如果是企业,您可以尝试使用 ONLINE 选项进行重建。 msdn.microsoft.com/en-us/library/ms177442(v=sql.110).aspx

标签: sql sql-server performance indexing


【解决方案1】:

我已经通过设置 fillfactor value = 80 解决了这个问题。感谢回复

【讨论】:

    猜你喜欢
    • 2016-11-25
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多