在网上搜索之后,我找不到理由
一篇关于站点的文章说:
当索引破碎度大于40%时,应重建索引。当索引碎片在10%到40%之间时,应该重新组织索引。索引重建过程使用更多的CPU,并锁定数据库资源。Server开发版本和企业版本具有联机选项,可以在重新构建索引时打开该选项。联机选项将在重建过程中保持索引可用。
我无法理解这一点,虽然它说WHEN可以这样做,但是我想知道WHY我们需要重建和重新组织索引吗?
发布于 2012-11-09 05:48:22
当您执行插入、更新和删除时,您的索引将在内部和外部变得支离破碎。
内部碎片是指索引页上的空闲空间百分比很高,这意味着Server在扫描索引时需要读取更多的页面。
外部碎片是指索引的页面不再有序时,因此Server必须做更多的工作,特别是在IO条件下读取索引。
如果索引变得过于零散,充其量,查询效率会降低,但最坏的情况是,Server将停止使用所有索引,这意味着几乎所有查询都必须执行表扫描或聚集索引扫描。这会对你的表现造成很大伤害!
当您重新组织索引时,Server将使用现有的索引页,只需对这些年份的数据进行调整。这将减轻内部碎片,也可以消除少量的外部碎片。这是一个重量比重建更轻的操作,而且总是在线的。
在重新生成索引时,Server实际上使用索引的数据并使用一组新的索引页。这将明显地减轻内部和外部碎片,但这是一个更重的操作,默认情况下会导致索引脱机,尽管它可以作为联机操作执行,这取决于您的Server版本和设置。
但是,请不要期望在重建后有0碎片。除非您使用MAXDOP查询提示,否则SQL Server将并行重建操作,涉及的处理器越多,可能会出现越多的碎片,因为每个处理器或核心将单独重新构建索引的区段或片段,而不考虑彼此。这是在最佳分割水平和重建指数所需时间之间的一种权衡。对于接近0的碎片,使用MAXDOP 1并在TempDB中对结果进行排序。
发布于 2018-07-08 16:22:20
为了消除碎片,导致数据库级别缓慢/长时间运行查询等问题。
要详细了解碎片化以及如何重建和重新组织索引(或重新组织索引页),请参阅以下链接:https://www.idera.com/productssolutions/sqlserver/sqldefragmanager/what-is-fragmentation
https://dba.stackexchange.com/questions/28433
复制相似问题