您的位置:首页 > 其它

保持索引的健康

2010-07-19 14:56 190 查看

概述

对于数据库的索引,最典型的描述,便是以书本的目录为比喻了.在许多场景下,使用索引,可以帮助程序更加快速地定义到需要的所需的数据.

然而,对于数据库而言而言.数据表的记录并不会一层不变,可以通过许多途径对表数据进行插入、更新、删除等操作。表数据的这些操作,以数据为依据的索引,在数据更新的过程中,同样需要做到与数据的更新同步(当然,还包括一些统计信息等数据库内部评估使用的信息的自动更新等)。当索引的节点在数据插入,删除或者更新的时候,需要在索引结构中按其排列顺序进行节点位置的更新,数据库为了确保更快速地更新索引,使用最快速的算法进行索引信息的同步,即,对索引页中数据的移动,在索引页空间不足的情况下,还需要对索引页进行拆分,从而造成了许多索引碎片。

分析

索引碎片的分析,在SQLSever2000中,保罗大师为我们提供了DBCCSHOWCONTIG工具。因为现在基本上使用的是SQLServer2005,所以就使用保罗提供的另外一个更好用的工具DMVsys.dm_db_index_physical_stats进行分析。

selectix.name,--索引名称
ps.index_type_desc,--索引类型
alloc_unit_type_desc,--存储单元类型(行内数据,溢出行,大数据行)
index_depth,--索引深度
avg_fragmentation_in_percent,--索引碎片的百分比,>=30,便需要考虑重建索引
avg_fragment_size_in_pages--索引碎片在索引页中的数量
fromsys.dm_db_index_physical_stats(db_id('DbName'),object_id('TableName'),null,null,'Sampled')ps
joinsys.indexesixonps.[object_id]=ix.[object_id]andps.index_id=ix.index_id
如下图中所示,是一个简单表的示例.


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐
章节导航