加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 为什么我们需要在SQL Server中重建和重组索引

发布时间:2021-01-12 17:33:09 所属栏目:MsSql教程 来源:网络整理
导读:在搜索互联网后,我找不到原因 为什么我们需要在SQL Server中重建和重组索引? 当我们重建和重组时,内部会发生什么? 关于site的文章说: Index should be rebuild when index fragmentation is great than 40%. Index should be reorganized when index fr

在搜索互联网后,我找不到原因

>为什么我们需要在SQL Server中重建和重组索引?
>当我们重建和重组时,内部会发生什么?

关于site的文章说:

Index should be rebuild when index fragmentation is great than 40%. Index should be reorganized when index fragmentation is between 10% to 40%. Index rebuilding process uses more CPU and it locks the database resources. SQL Server development version and Enterprise version has option ONLINE,which can be turned on when Index is rebuilt. ONLINE option will keep index available during the rebuilding.

我无法理解这一点,虽然它说什么时候这样做,但我想知道为什么我们需要重建和重组索引?

解决方法

在执行插入更新和删除操作时,索引将在内部和外部变为碎片.

内部碎片是指索引页面上的可用空间百分比很高,这意味着SQL Server在扫描索引时需要读取更多页面.

外部碎片是当索引的页面不再有序时,因此SQL Server必须做更多工作,特别是在IO术语中读取索引.

如果您的索引过于分散,最多,您的查询效率会降低,但最坏的情况是,SQL Server将停止一起使用索引,这意味着几乎所有查询都必须执行表扫描或聚簇索引扫描.这会伤害你的表现很多!

重新组织索引时,SQL Server使用现有的索引页面,只是在这些年龄段上随机播放数据.这将缓解内部碎片,还可以消除少量的外部碎片.它比重建更轻量级操作,并且始终在线.

重建索引时,SQL Server实际上会对索引的数据进行重新分配并使用一组新的索引页.这显然会减轻内部碎片和外部碎片,但是这是一个更重的操作,默认情况下会使索引脱机,尽管它可以作为在线操作执行,具体取决于您的SQL Server版本和设置.

但是,重建之后请不要期望有0碎片.除非您使用MAXDOP查询提示,否则SQL Server将并行化重建操作并且涉及的处理器越多,可能存在的碎片就越多,因为每个处理器或核心将单独重建其索引的部分或片段,而不考虑彼此.这是在最佳碎片级别和重建索引所花费的时间之间的权衡.对于接近0的碎片,使用MAXDOP 1并在TempDB中对结果进行排序.

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读