索引填充因子与碎片,索引碎片的查询

一.概述

    索引填充因子成效:提供填充因子选项是为着优化索引数据存款和储蓄和属性。 当创立或重新生成索引时,填充因子的值可规定各样叶级页上要填写数据的半空中百分比,以便在每一页上保存部分结余存款和储蓄空间作为以后增加索引的可用空间,举个例子:钦命填充因子的值为
80 表示每一个叶级页少将有 十分之四的长空保留为空,以便随着向基础表中添加多少而为扩大索引提供空间。

  填充因子的值是 1 到 100
之间的比重,服务器范围的暗中同意值为
0,那象征将完全填充叶级页。

 1.1
页拆分现象

   依照数据的询问和改动的比例,正确选拔填充因子值,可提供丰盛的空中,以便随着向基础表中添扩张少而扩张索引,进而减少页拆分的大概。假设向已满的索引页加多新行(新行地点依照键排序准则,能够是页中自便行地方), 数据库引擎将把大概二分一的行移到新页中,以便为该新行腾出空间。 这种组合称为页拆分。页拆分可为新记录腾出空间,不过实行页拆分大概要求开销自然的时刻,此操作会消耗大量能源。 别的,它还大概形成碎片,从而形成 I/O
操作扩张。 假如常常发生页拆分(只怕过sys.dm_db_index_physical_stats
来查看页拆分情形),可透过动用新的或现有的填写因子值来重新生成索引,进而再一次分发数据。

  填充钱设置过低: 优点是
插入或退换时减少页的拆分次数。瑕疵是
会使索引要求越来越多的寄放空间,何况会下滑读取质量。

  填充钱设置过高: 优点是
借使每一个索引页数据都全体填满,此时select功效最高。劣点是
插入或涂改时需求活动前边全数页,功能低。

目录碎片:

二. 碎片与填充因子案例

   上面深入分析在生产条件下,对长日子二个表的ix_1索引实行剖判。

-- 有一个PUB_Search_ResultVersions2表长期有增删改操作, 在很长一段时间运行后,查看碎片如下
dbcc SHOWCONTIG (PUB_Search_ResultVersions2,'ix_1')

  图片 1

    通过上海体育场面能够了然到平均页密度是29.74%,也正是内部碎片太多,现八个页的数额存款和储蓄量才是常规二个页的存储量。扫描的页数是703页,涉及到了1九十多个区。上面重新维护索引

--重建索引
ALTER INDEX ix_1 ON dbo.PUB_Search_ResultVersions2 REBUILD

  图片 2

     通过上海教室能够看来,扫描页数唯有了248页(原本是703页)
用了36区(原本是1九十一个区),现等于一页的实际数据是事先三页的总的数量,
查询将会收缩了大批量的I/O扫描。

  如若每每的增加和删除改,最棒设置填充因子,暗中认可是0,相当于百分百,
假诺有新索引键排序后,挤入到叁个已填满8060字节的页中时,就能够发出页拆分,产生碎片,这里笔者利用图形界面来设置填充因子为85%(最棒通过t-sql来安装,做运转自动爱惜),再重新建立下索引使设置生效。

  图片 3

  下图能够看到平均页密度是85%,填充因子设置生效。能够在经过sys.dm_db_index_physical_stats重新查看该索引页使用数据。

图片 4

  • 其间碎片(或说叶级填充率):反映数据叶级的上空占用率或空闲率
  • 表面碎片:由于sqlserver以延续的8个page作为二个数码库块(区)extent作为读取单位,故此由于大意存款和储蓄上的区和逻辑上不平等(不再三再四)而致使io读取切换

 

  • 逻辑碎片:那是索引的叶级页中出错页所占的比重。对于出错页,分配给索引的下叁个物理页不是由近来叶级页中的“下一页”指针所针对的页
  • 区碎片:那是堆的叶级页中出错区所占的百分比。出错区是指:满含堆的当前页的区不是情理上的蕴藏前一页的区后的下八个区。(微软真不会分解概念:(

 

查询碎片景况:

  1.   dbcc showcontig:四片段对象名,【索引名】|【索引id】
  2.   dbcc showcontig:当前库对象id,【索引名】|【索引id】    
  3.   sys.dm_db_index_physical_stats:数据库id,对象id,索引id,分区id,扫描情势
      • 七个参数,基本上,【0(特殊的,index可以为0,故该处为-1)】|【null】|【default】
        意义是同等的

 

主干指标:

  1. 举目四望密度(%)[极品计数:实际计数]:那是“最好计数”与“实际计数”的比值。假如全数故事情节都以三番五次的,则该值为
    100;如若该值小于
    100,则设有有的散装。“最棒计数”是指在漫天都总是链接的境况下,区改变的杰出数目。“实际计数”是指区退换的骨子里次数。
  2. 逻辑扫描碎片(%):扫描索引的叶级页时重回的出错页的比例。此数与堆无关。对于出错页,分配给索引的下四个物理页不是由近年来叶级页中的“下一页”指针所针对的页。
  3. 区扫描碎片(%):扫描索引的叶级页时出错区所占的比重。此数与堆毫不相关。对于出错区,包涵当前索引页的区在大意上不是含有上八个索引页的区的下一个区。注意:
    要是索引赶上几个文件,则此数字抽象。
  4. avg_page_space_used_in_percent:平均page空间使用率。相关的定义:页拆分、页填充率
  5. avg_fragment_size_in_pages:平均多少个page就有三个零散,该值
    越大越好
  6. avg_fragmentation_in_percent:碎片率,不解释。该值越小越好,和avg_fragment_size_in_pages
    反比!
  7. page_count:扫描的总page数
  8. record_count:扫描的总记录数。注意:是相对于近日的扫描来说的记录数,不必然是您所以为的
    客户表的一整套数据
  9. forwarded_record_count:页拆分的记录数据
网站地图xml地图