维护索引——通过重组索引提高性能

简介: 原文:维护索引——通过重组索引提高性能前言: 如果碎片程度小于30%,建议使用重组而不是重建。因为重组不会锁住数据页或者数据表,并且降低CPU的资源。 总得来说,重组会清空当前的B-TREE,特别是索引的叶子节点,重组数据页和消除碎片。
原文: 维护索引——通过重组索引提高性能

前言:

如果碎片程度小于30%,建议使用重组而不是重建。因为重组不会锁住数据页或者数据表,并且降低CPU的资源。

总得来说,重组会清空当前的B-TREE,特别是索引的叶子节点,重组数据页和消除碎片。和重建不同,重组不会添加任何新数据页。

 

准备工作:

为了了解是否有必要重组索引,需要首先查看碎片程度,如果在10%以下,那一般没必要做什么维护,如果在10%~30%,就建议进行重组。

 

 

步骤:

1、 以下各种重组索引的方法: 

 
  1. --不指定参数重组索引:  
  2. ALTER INDEX [idx_refno] ON [ordDemo]  
  3. REORGANIZE  
  4. GO  
  5.   
  6. --重组表中所有索引:  
  7. ALTER INDEX ALL ON [ordDemo]  
  8. REORGANIZE  
  9. GO  
  10.   
  11. --使用DBCC INDEXDEFRAG重建表上所有索引:  
  12. DBCC INDEXDEFRAG('AdventureWorks','ordDemo')  
  13. GO  
  14.   
  15. --使用DBCC INDEXDEFRAG重组表上一个索引:  
  16. DBCC INDEXDEFRAG('AdventureWorks','ordDemo','idx_refno')  
  17. GO  




 

 

2、 DBCC INDEXDEFRAG命令同样是后续不建议继续使用的命令。 

 

分析:

索引重组,也可以称为碎片重组,对单独索引的操作将使用单独的线程。不可以并行操作。所以同一时刻只有一个索引被操作。

重组并不产生新页,但是会压缩页,如果页面已经为空,将会移除这个页,所以填充因子选项是不需要的。同时,因为它不会锁住对象,所以总是联机处理。

重组同样需要sysadmin、db_onwer、db_ddladmin角色。

目录
相关文章
|
2月前
|
存储 监控 关系型数据库
如何避免使用冗余索引
【10月更文挑战第15天】如何避免使用冗余索引
37 1
|
7月前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
420 0
|
7月前
|
存储 关系型数据库 MySQL
mysql索引优化,更好的创建和使用索引
mysql索引优化,更好的创建和使用索引
|
SQL 存储 缓存
索引不是越多越好,理解索引结构原理,才有助于我们建立合适的索引!
MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引。
661 0
|
物联网 索引
关于本地分区索引和索引组织表保证唯一性的限制
首先说明索引组织表和本地分区唯一索引有着共同的特点。 1、索引组织表(以下简称IOT)要求主键是必须的因为表的结构会按照主键索引进行构造,如果IOT分区那么,那么可以理解为一个类似的按照某个字段分区的    本地索引,因为索引和表是在一起的,表的分区必然就是索引的分。
967 0
|
Go 索引
第十章——维护索引(4)——通过重组索引提高性能
原文: 第十章——维护索引(4)——通过重组索引提高性能 前言: 如果碎片程度小于30%,建议使用重组而不是重建。因为重组不会锁住数据页或者数据表,并且降低CPU的资源。
824 0