有多大的表或索引中有多少数据页值得考虑运行索引重建或索引重组操作?

J.D*_*.D. 2 index sql-server index-tuning fragmentation sql-server-2016

在用于重新组织和重建索引的联机丛书中,Microsoft 提到:

重建或重组小型行存储索引通常不会减少碎片。

在值得考虑索引重组或索引重建操作的地方的截止点附近考虑了多少行数或数据页数?

Dav*_*oft 7

此外,“减少碎片化”本身并不是一个性能目标。在许多(大多数?)现代存储平台上,顺序 IO 和随机 IO 之间几乎没有区别,这是进行碎片整理的一个主要历史原因。

我曾在顺序和随机 IO 之间的吞吐量差异为 10 倍或更多的系统上工作过。当 SQL Server 尝试扫描碎片索引时,页面链接列表的物理文件位置每隔几个区就会跳转,从而减少 IO 大小、随机化 IO、防止预读 IO 并消除推测读入的好处SAN 控制器缓存。

在现代系统上,存储要么有很多主轴,要么是基于闪存的。这两者都减少了小型随机 IO 和大型顺序 IO 之间的性能差异。

此外,如果表被大量缓存,在磁盘上对其存储进行碎片整理的好处就会减少。小型行存储表通常会被缓存。