【发布时间】: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