-- 创建聚集索引
create table [dbo].[pub_stocktest] add  constraint [pk_pub_stocktest] primary key clustered 
(
[sid] asc
)with (pad_index = off, statistics_norecompute = off, sort_in_tempdb = off, ignore_dup_key = off, 
online = off, allow_row_locks = on, allow_page_locks = on) on [primary]

-- 创建非聚集索引
 create nonclustered index [ix_model] on [dbo].[pub_stocktest]
(
    [model] asc
)
include (     [name]) with (pad_index = off, statistics_norecompute = off, sort_in_tempdb = off, drop_existing = off, 
online = off, allow_row_locks = on, allow_page_locks = on, FILLFACTOR = 85) on [primary]

图片 1在SQLServer数据库,通过DBCC
ShowContig或DBCC
ShowContig(表名)检查索引碎片情状,引导大家对其展开定期重新建立整理。

DBCC SHOWCONTIG是展现钦点的表的数目和目录的零碎音讯。

当索引所在页面包车型客车依附主关键字的逻辑顺序,和数据文件中的物理顺序不相配时,碎片就发生了。全数的叶级页包罗了指向前三个和后三个页的指针。那样就变成八个双链表。理想状态下,数据文件中页的情理顺序会和逻辑顺序相配。整个磁盘的劳作性质在物理顺序相配逻辑顺序时将引人瞩目进级。对有个别特定的查询来说,那将带来极佳的特性。当物理排序和逻辑排序不匹配时,磁盘的做事性质会变得不行,那是因为磁头必须前进和向后移动来寻找索引,并非只象有个别单一方平昔寻觅。碎片会影响I/O质量,但是对此位于SQL
Server数据缓冲内的多少页来讲,碎片并不会推动其余影响。

1.1 Filefactor参数

运维结果如下:

  如上海体育场地所示。

在目录碎片整理前,请保管系统能源的一部分标题,举个例子物理磁盘碎片,不创建的基本功结构等成分会给品质带来负面影响,参看KB935089:应用
Defrag 处理器能够 such as Exchange Server 或 SQL Server
数据库服务器的卷实行零散整理。
DBCC
SHOWCONTIG是显得钦定的表的数量和目录的散装消息。当运转该命令时,要极度注意逻辑碎片(Logical
Fragmentation)和页密度(Page Density)七个目的。 

  使用Filefactor能够对索引的种种叶子分页存款和储蓄保留部分空中。对于聚集索引,叶品级包涵了数据,使用Filefactor来调控表的保留空间,通过预留的空中,防止了新的数码按梯次插入时,需腾出空位而进展分页分隔。
  Filefactor设置生效注意,唯有在开创索引时才会依据现已存在的数码调整留下的长空尺寸,如里要求能够alter
index重新建立索引一视同仁置原本内定的Filefactor值。
  在创立索引时,假如不内定Filefactor,就选用默许值0
也便是填充满,可透过sp_configure
来布局全局实例。Filefactor也只就用于叶子级分页上。纵然要在个中层调节索引分页,能够因此点名pad_index挑选来达成.该选用会通报到目录上独具等级次序使用同样的Filefactor。Pad_index也独有索引在新建或重新建立时有用。

DBCC SHOWCONTIG 正在扫描 'tbModule' 表...
表: 'tbModule'(1845581613);索引 ID: 0,数据库 ID: 9
已执行 TABLE 级别的扫描。
- 扫描页数.....................................: 51
- 扫描扩展盘区数...............................: 9
- 扩展盘区开关数...............................: 8
- 每个扩展盘区上的平均页数.....................: 5.7
- 扫描密度[最佳值:实际值]....................: 77.78%[7:9]
- 扩展盘区扫描碎片.............................: 77.78%
- 每页上的平均可用字节数.......................: 351.1
- 平均页密度(完整)...........................: 95.66%

  解释如下:

Page
Scanned-扫描页数:
假若您明白行的好像尺寸和表或索引里的行数,那么你能够估摸出索引里的页数。看看扫描页数,假如分明比你猜测的页数要高,表达存在里面碎片。
Extents
Scanned-扫描扩张盘区数:
用扫描页数除以8,四舍五入到下二个最高值。该值应该和DBCC
SHOWCONTIG再次来到的扫描扩张盘区数同样。如果DBCC
SHOWCONTIG重回的数高,表达存在外界碎片。碎片的不得了程度正视于刚(Yu-Gang)才来得的值比推测值高多少。
Extent
Switches-扩大盘区按钮数:
该数应该对等扫描扩充盘区数减1。高了则印证有表面碎片。
Avg. Pages per
Extent-种种扩充盘区上的平均页数:
该数是扫描页数除以扫描扩大盘区数,一般是8。小于8表达有外界碎片。
Scan Density [Best Count:Actual
Count]-扫描密度[最好值:实际值]:
DBCC
SHOWCONTIG再次来到最实惠的三个比重。那是扩展盘区的最好值和实际值的比率。该比例应该尽量接近100%。低了则证实有外界碎片。

1.2 Drop_existing 参数

连锁解释如下:

  Page
Scanned-扫描页数:假若您理解行的近乎尺寸和表或索引里的行数,那么您能够测度出索引里的页数。看看扫描页数,假使显著比你估算的页数要高,表达存在内部碎片。

Logical Scan
Fragmentation-逻辑扫描碎片:
冬日页的百分比。该比例应该在0%到10%里面,高了则证实有表面碎片。
Extent Scan
Fragmentation-扩大盘区扫描碎片:
冬辰扩大盘区在扫描索引叶级页中所占的比例。该比例应该是0%,高了则表明有外界碎片。
Avg. Bytes Free per
Page-每页上的平分可用字节数:
所扫描的页上的平均可用字节数。越高表达有在这之中碎片,然而在您用这些数字垄断(monopoly)是或不是有中间碎片在此之前,应该考虑fill
factor(填充因子)。
Avg. Page Density
(full)-平均页密度(完整):
每页上的平分可用字节数的比重的相反数。低的比重表明有在那之中碎片。

  删除或重新建立多个钦命的目录作为单个事务来拍卖。该项在重新建立集中索引时十三分有用,当删除贰个聚焦索引时,sqlserver会重新创设每种非集中索引以便将书签从集中索引键改为路虎极光ID。若是再新建只怕重新塑造聚集索引,Sql
server会再一次重城建总公司体的非聚焦索引,倘诺再新建或重新建立的集中索引键值同样,能够安装Drop_existing=ON。

Page
Scanned-扫描页数:倘令你理解行的近乎尺寸和表或索引里的行数,那么您能够推断出索引里的页数。看看扫描页数,假诺显著比你推测的页数要高,表明存在内部碎片。
Extents
Scanned-扫描扩展盘区数:用扫描页数除以8,四舍五入到下一个最高值。该值应该和DBCC
SHOWCONTIG再次来到的扫视扩展盘区数一样。假诺DBCC
SHOWCONTIG重回的数高,表明存在外界碎片。碎片的严重程度信赖于刚先生才浮现的值比估量值高多少。
Extent
Switches-扩充盘区按钮数:该数应该对等扫描扩张盘区数减1。高了则注解有表面碎片。
Avg. Pages per
Extent-各样扩充盘区上的平分页数:该数是扫描页数除以扫描扩张盘区数,一般是8。小于8表明有表面碎片。
Scan Density [Best Count:Actual
Count]-扫描密度[最好值:实际值]:DBCC
SHOWCONTIG再次来到最得力的一个比例。这是扩展盘区的最棒值和实际值的比率。该比例应该尽量接近100%。低了则证实有外界碎片。

  Extents
Scanned-扫描扩张盘区数:用扫描页数除以8,四舍五入到下多少个最高值。该值应该和DBCC
SHOWCONTIG再次回到的围观扩大盘区数一样。倘诺DBCC
SHOWCONTIG重临的数高,表达存在外界碎片。碎片的严重程度重视于刚先生才呈现的值比估算值高多少。

参考:Microsoft SQL Server 3000索引碎片整理最棒施行

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注