SQL Server 数据库的整理优化的基本过程(三)

高建刚

 

第二节 索引

 

第三节 索引的维护

 

    数据库在进行数据的insert、update、delete时,引擎都会自动维护索引。随着时间的积累,这些操作会造成数据的不连续,即产生了索引的碎片,随着碎片的产生,从而降低了查询的性能,反映到前台程序中,就是用户体验效果差,整个系统运行速度慢。当这种情况出现时,我们就需要利用创建索引或重新组织索引来对索引进行维护,至于具体采用什么方式,需要结合索引产生碎片的严重程度。

    在此,需要提出的是,在SQL Server2005的DDL对维护索引增加了更丰富的语句,而以前的版本往往需要DBCC来处理,不仅仅理解起来比较费劲,更多的是不能从原理上来分析具体的原因。

    首先,让我们来看看如何查找数据不连续造成的索引碎片。

    数据的不连续主要分两种,一种是内部数据存储页的不连续,许多的空间没有记录数据;另一种是外部的硬盘存放数据的分页与范围不一致,即索引或数据表散落在多个范围中,或存放索引或数据表的分页不是连续的放在一起的,当然也有的情况是数据顺序与实例在硬盘存放的分页顺序不同,导致的硬盘读取没有效率,读出后数据还需要重新组织,重新整理。

    那么通过什么方式来查看索引的不连续程度哪?微软为我们提供了DBCC SHOWCOMFIG指示符,通过帮助我们发现其用法其实不是很复杂,而结果的表述也很容易理解。



DBCC SHOWCONTIG 
[ ( 
    { table_name | table_id | view_name | view_id } 
    [ ,index_name | index_id ] 
) ] 
    [ WITH 
        { 
         [ , [ ALL_INDEXES ] ] 
         [ , [ TABLERESULTS ] ] 
         [ , [ FAST ] ]
         [ , [ ALL_LEVELS ] ] 
         [ NO_INFOMSGS ]
         }
    ]
下班用例子来查看此指示符所呈现的数据:
posted on 2010-10-03 15:15  gaojier  阅读(154)  评论(0编辑  收藏  举报