ITPub博客

首页 > 数据库 > > SQLServer数据库优化之整理索引碎片

SQLServer数据库优化之整理索引碎片

作者:AI中国 时间:2023-02-23 11:20:20 0 删除 编辑

如果表已经创建好了索引,但性能却仍然不好,那很可能是产生了索引碎片,就需要进行索引碎片整理。

什么是索引碎片? 由于表上有过度地插入、修改和删除操作,索引页被分成多块就形成了索引碎片,如果索引碎片严重,那扫描索引的时间就会变长,甚至导致索引不可用,因此数据检索操作就慢下来了。

在SQLServer数据库,通过DBCC ShowContig或DBCC ShowContig(表名)检查索引碎片情况,指导我们对其进行定时重建整理。

通过对扫描密度(过低),扫描碎片(过高)的结果分析,判定是否需要索引重建,主要看如下两个:

Scan Density [Best Count:Actual Count]-扫描密度[最佳值:实际值]:DBCC SHOWCONTIG返回最有用的一个百分比。这是扩展盘区的最佳值和实际值的比率。该百分比应该尽可能靠近100%。低了则说明有外部碎片。

Logical Scan Fragmentation-逻辑扫描碎片:无序页的百分比。该百分比应该在0%到10%之间,高了则说明有外部碎片。

解决方式:

1、利用DBCC INDEXDEFRAG整理索引碎片;

2、利用DBCC DBREINDEX重建索引。

 DBCC INDEXDEFRAG 命令是联机操作,所以索引只有在该命令正在运行时才可用,而且可以在不丢失已完成工作的情况下中断该操作。这种方法的缺点是在重新组织数据方面没有聚集索引的除去/重新创建操作有效。重新创建聚集索引将对数据进行重新组织,其结果是使数据页填满。填满程度可以使用 FILLFACTOR 选项进行配置。

这种方法的缺点是索引在除去/重新创建周期内为脱机状态,并且操作属原子级。如果中断索引创建,则不会重新创建该索引。也就是说,要想获得好的效果,还是得用重建索引,所以决定重建索引。


本文来源https://www.modb.pro/db/114885

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31560284/viewspace-3122014/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Greenplum 数据库
请登录后发表评论 登录
全部评论

注册时间:2019-12-23

  • 博文量
    212
  • 访问量
    2476