当前位置: 美高梅棋牌 > 热门视频 > 正文

sql server 索引演讲类别五 索引参数与心碎

时间:2019-09-22 07:49来源:热门视频
一 . dm_db_index_physical_stats 重要字段表达 1.1 内部碎片:是avg_page_space_used_in_percent字段。是指页的填充度,为了使磁盘使用景况达到最优,对于未有过多任性插入的目录,此值招待近100%

一 . dm_db_index_physical_stats 重要字段表达

  1.1 内部碎片:是avg_page_space_used_in_percent字段。是指页的填充度,为了使磁盘使用景况达到最优,对于未有过多任性插入的目录,此值招待近 100%。 不过,对于有所大多率性插入且页很满的目录,其页拆分数将不仅仅充实。 那将促成愈来愈多的碎片。 因而,为了削减页拆分,此值应小于 100%。

  1.2 外界碎片:也叫逻辑碎片是avg_fragmentation_in_percent字段。是分页的逻辑顺序和情理顺序不相同盟或许索引具有的扩充不总是时爆发。当对表中定义的目录进行数据修改(INSERT、UPDATE 和 DELETE 语句)的万事经过中都会并发零星。 由于这个修改平时并不在表和目录的行中平均布满,所以每页的填充度会随时间而退换。 对于扫描表的片段或任何索引的询问,这种碎片会招致额外的页读取。 那会妨碍数据的相互扫描。

  1.3 使用查看dm_db_index_physical_stats索引碎片 (SQL server 二零零七以上)。

SELECT OBJECT_NAME(sys.indexes.OBJECT_ID) AS tableName,
 sys.indexes.name,   
 page_count,
 (page_count*8.0)AS 'IndexSizeKB',
 avg_page_space_used_in_percent,
 avg_fragmentation_in_percent,
 record_count,avg_record_size_in_bytes,
index_type_desc,
fragment_count 
from sys.dm_db_index_physical_stats(db_id('dbname'),object_id('tablename'), null,null,'sampled') 
 JOIN sys.indexes  ON   sys.indexes.index_id = sys.dm_db_index_physical_stats.index_id
 AND sys.indexes.object_id = sys.dm_db_index_physical_stats.object_id

    下边仍旧接着上一篇查询PUB_StockCollect表下的目录

图片 1

  (1) avg_fragmentation_in_percent(外界碎片也叫逻辑碎片):最根本的列,索引碎片百分比。
    val >十分之一 and val<= 十分之四 -------------索引重组(碎片整理) alter index reorganize )
    val >伍分之一 --------------------------索引重新建立 alter index rebulid with (online=on)
    avg_fragmentation_in_percent:大范围的散装(当碎片大于25%),大概要求索引重建
  (2) page_count:索引或数据页的总的数量。
  (3) avg_page_space_used_in_percent(内部碎片):最关键列:页面平均使用率也叫存款和储蓄空间的平均百分比, 值越高(以百分之八十填充度为参照他事他说加以考察试的地方) 页存款和储蓄数据就越来越多,内部碎片越少。
  (4) avg_record_size_in_bytes:平均记录大小(字节)。
  (5) index_type_desc列:索引类型-聚集索引只怕非聚集索引等。
  (6) record_count:总记录数,相当于行数。
  (7) fragment_count: 碎片数。

-- 创建聚集索引
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]

二. 化解碎片方法

-------------sqlserver 2000 碎片解决--------------
-- 索引重建 充填因子80
dbcc dbreindex(PUB_StockCategory,'PK_PUB_StockCategory',80)
-- 索引重组
DBCC INDEXDEFRAG(dbname,PUB_StockCategory,'PK_PUB_StockCategory')

 

------------sqlserver 2005以上碎片解决--------
-- 重新组织表中单个索引 
 ALTER INDEX ix_pub_stock_2 ON dbo.PUB_Stock REORGANIZE  
 -- 重新组织表中的所有索引
 ALTER INDEX ALL ON dbo.PUB_Stock REORGANIZE  
 -- 重新生成表中单个索引 (重点:重建索引用)
 ALTER INDEX ix_pub_stock_2 ON dbo.PUB_Stock REBUILD
 -- 重新生成表中的所有索引 
 ALTER INDEX ALL  ON dbo.PUB_Stock  
 REBUILD  WITH(FILLFACTOR=80, SORT_IN_TEMPDB=ON ,STATISTICS_NORECOMPUTE = ON )

1.1 Filefactor参数

  使用Filefactor能够对索引的各个叶子分页存储保留部分空间。对于集中索引,叶品级包涵了多少,使用Filefactor来调整表的保留空间,通过预留的半空中,制止了新的数额按顺序插入时,需腾出空位而张开分页分隔。
  Filefactor设置生效注意,唯有在开创索引时才会根据现已存在的数额调整留下的上空尺寸,如里要求能够alter index重新建立索引同样爱惜置原本钦赐的Filefactor值。
  在创立索引时,假如不钦赐Filefactor,就利用暗中同意值0 也正是填充满,可通过sp_configure 来布置全局实例。Filefactor也只就用来叶子级分页上。假使要在中游层控制索引分页,能够透过点名pad_index选料来实现.该采用会通告到目录上具有档次使用同样的Filefactor。Pad_index也只有索引在新建或重新建立时有用。

1.2 Drop_existing 参数

  删除或重新建立贰个钦命的目录作为单个事务来拍卖。该项在重新建立集中索引时拾分有用,当删除七个集中索引时,sqlserver会重新创设种种非集中索引以便将书签从集中索引键改为EvoqueID。固然再新建或然重新建立聚焦索引,Sql server会再三遍重城建总公司体的非集中索引,倘使再新建或重新创设的集中索引键值一样,能够设置Drop_existing=ON。

1.3 IGNORE_DUP_KEY

  是指假如两个update或许insert语句影响多行数据,但有一行键被察觉爆发重值时,整个讲话就可以回滚,IGNORE_DUP_KEY=on时发出重复键值时不会唤起一切讲话的回滚,重复的行会被屏弃其余的行会被插入或更新。

1.4 Statistics_norecompute

  选项决定了是或不是须要活动更新索引上的总计,每一种索引维护着该索引第1位字段的数值布满的柱状图,在询问试行安排时,查询优化器利用那几个总结新闻来判定多少个一定索引的有效性。当数码达到三个阀值时,总计值会变。Statistics_norecompute选项允许叁个关乎的目录在数量修改时不自动更新总结值。该选用覆盖了auto_update_statistics的on值。

1.5 ONLINE   

编辑:热门视频 本文来源:sql server 索引演讲类别五 索引参数与心碎

关键词: