MSSQL 重新生成索引,重新组织索引

> 5% 且 < = 30%

ALTER INDEX REORGANIZE

> 30%

ALTER INDEX REBUILD WITH (ONLINE = ON)*

 

* 重新生成索引可以联机执行,也可以脱机执行。重新组织索引始终联机执行。若要获得与重新组织选项相似的可用性,应联机重新生成索引。

这些值提供了一个大致指导原则,用于确定应在 ALTER INDEX REORGANIZE 和 ALTER INDEX REBUILD 之间进行切换的点。不过,实际值可能会随情况而变化。必须要通过试验来确定最适合您环境的阈值。

非常低的碎片级别(小于 5%)不应通过这些命令来解决,因为删除如此少量的碎片所获得的收益始终远低于重新组织或重新生成索引的开销。

 

:rebuild和rebuild online的区别

1、当rebuild 时一般对原先索引进行INDEX FAST FULL SCAN

2、当rebuild online的时不用原先索引而执行TABLE ACCESS FULL

3rebuild和rebuild online会发生sort,即需要用到temp表空间。

4rebuild 会阻塞dml(curd等)语句而rebuild online则不会。

5、rebuild online时系统会产生一个SYS_JOURNAL_xxx的IOT类型的系统临时日志表,所有rebuild online时索引的变化都记录在这个表中,当新的索引创建完成后,把这个表的记录维护到新的索引中去,然后drop掉旧的索引,rebuild online就完成了。

 

ref:https://msdn.microsoft.com/zh-cn/library/ms189858(v=sql.105).aspx

posted @ 2017-11-22 10:24  just keep moving  阅读(2593)  评论(0编辑  收藏  举报