SQL Server 索引碎片是什么?
1、索引页没有按索引的逻辑顺序摆放,比如本应按 ABC 摆放,现在摆成了 ACB。
2、索引页中太多的空白区域,留一点空白区域是正常的,以应对插入的索引,但是太多的话,就没必要了。
过高索引碎片有什么危害?
1、降低性能。
2、浪费空间。
怎么查看碎片量?
执行 dbcc showcontig 或 dbcc showcontig(表名)。
查看逻辑扫描碎片指标,越低越好。
或者展开表前面的加号,展开“索引”前面的加号,找到对应的索引,右键,属性。
怎么“整理”碎片?
展开表前面的加号,展开“索引”前面的加号,找到对应的索引,右键,点击“重新生成”或“重新组织”。
重新生成:效果最佳,分“联机”和“脱机”:联机通常慢一点,但是生成过程中不锁表,不过得企业版才行;脱机通常快一点,它并不是让数据库离线,而是生成过程中锁住表,使表不可访问,实际使用中,测试一个上 GB 的索引,不到一分钟就弄好了。
重新组织:尽管效果不如“重新生成”,但是通常效果也很不错,测试 N 个索引,重新组织后,最大的碎片也才 7%。
“整理”之后,可能数据库反而会变大,此时数据库上右键,收缩一下数据库即可。
顺便说一下,要节约空间,那个数据库文件默认按 10% 增长,也可以修改一下。
相关阅读