通过重新组织或重新生成索引来解决索引碎片问题(Solve the problem of index fragmentation by reorganizing or rebuilding the i)

索引碎片概述

什么是索引碎片,为什么我应该关注它:
当索引包含的页中,索引中的逻辑排序(基于索引中的键值)与索引页中的物理排序不匹配时,就存在碎片。
无论何时对基础数据执行插入、更新或删除操作,数据库引擎 都会自动修改索引。 例如,在表中添加行可能会导致拆分行存储索引中的现有页,以腾出空间来插入新键值。 随着时间的推移,这些修改可能会导致索引中的信息分散在数据库中(含有碎片)。 当索引包含的页中的逻辑排序(基于键值)与数据文件中的物理排序不匹配时,就存在碎片。
大量碎片式索引可能会降低查询性能,因为需要额外 I/O 来查找索引指向的数据。 较多的 I/O 会导致应用程序响应缓慢,特别是在涉及扫描操作时。

检测碎片量

通过使用 sys.dm_db_index_physical_stats,可以检测特定索引中的碎片、表或索引视图上的所有索引、某个数据库中的所有索引或所有数据库中的所有索引。 对于已分区索引, sys.dm_db_index_physical_stats 还提供每个分区的碎片信息。
sys.dm_db_index_physical_stats 返回的结果集包含以下列:
检测行存储索引中的碎片
列 说明
avg_fragmentation_in_percent 逻辑碎片(索引中的无序页)的百分比。
fragment_count 索引中的碎片(物理上连续的叶页)数量。
avg_fragment_size_in_pages 索引中一个碎片的平均页数。
知道碎片程度后,可以使用下表确定删除碎片的最佳方法:INDEX REORGANIZE 或 INDEX。
检测行存储索引中的碎片
avg_fragmentation_in_percent 值 修复语句

5% 且 < = 30% 1 ALTER INDEX REORGANIZE
30% 1 ALTER INDEX REBUILD WITH (ONLINE = ON) 2

DECLARE @db_id SMALLINT;  
DECLARE @object_id INT;  
  
SET @db_id = DB_ID(N'court_juror');  
SET @object_id = OBJECT_ID(N'court_juror.dbo.z_sms');  
  
IF @db_id IS NULL  
BEGIN;  
    PR
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值