DBCC SHOWCONTIG 正在扫描 'Account' 表...
表: 'Account' (964966564);索引 ID: 1,数据库 ID: 7
已执行 TABLE 级别的扫描。
- 扫描页数................................: 84
- 扫描区数..............................: 11
- 区切换次数..............................: 10
- 每个区的平均页数........................: 7.6
- 扫描密度 [最佳计数:实际计数].......: 100.00% [11:11]
- 逻辑扫描碎片 ..................: 0.00%
- 区扫描碎片 ..................: 72.73%
- 每页的平均可用字节数........................: 1600.0
- 平均页密度(满).....................: 80.23%
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
这个怎么看??
什么是  “区扫描碎片 ”?

解决方案 »

  1.   

    --查询数据库db中表tb的所有索引的碎片情况
    use db
    go
    select 
      a.index_id,---索引编号
      b.name,---索引名称
      avg_fragmentation_in_percent---索引的逻辑碎片
    from
      sys.dm_db_indx_physical_stats(db_id(),object_id(N'create.consume'),null,null,null) as a
    join
      sys.indexes as b
    on
      a.object_id=b.object_id 
    and
      a.index_id=b.index_id
    go---解释下sys.dm_db_indx_physical_stats的参数
    datebase_id: 数据库编号,可以使用db_id()函数获取指定数据库名对应的编号。
    object_id: 该索引所属表或试图的编号
    index_id: 该索引的编号
    partition_number:对象中分区的编号
    mode:模式名称,用于指定获取统计信息的扫描级别。
    有关sys.dm_db_indx_physical_stats的结果集中的字段名去查下联机丛书。
      

  2.   


    消息 208,级别 16,状态 1,第 2 行
    对象名  'sys.dm_db_indx_physical_stats' 无效。
      

  3.   

    区扫描碎片?
    -----------------
    區--是指盤區 為存儲分配的單位 8K為頁 8*8K=64為1區參照聯機說明:
    http://technet.microsoft.com/zh-cn/library/ms175008%28SQL.90%29.aspx
      

  4.   

    哦 表名错了一点点select 
      a.index_id,---索引编号
      b.name,---索引名称
      avg_fragmentation_in_percent---索引的逻辑碎片
    from
      sys.dm_db_index_physical_stats(db_id(),object_id(N'create.consume'),null,null,null) as a
    join
      sys.indexes as b
    on
      a.object_id=b.object_id 
    and
      a.index_id=b.index_id
    go
      

  5.   

    優化數據庫之重建整理索引
    http://blog.csdn.net/roy_88/article/details/6163583
      

  6.   

    检查索引的命令:
    DBCC SHOWCONTIG去除碎片,可以有三种方法:删除并重新生成索引、原地重新生成索引、重新组织索引。
    删除并重新生成索引最主要优势在于,几乎所有有关索引的东西都是可以改变的。
    create unique clustered index PK_Address_AddressID on Person.Address(AddressID) with (fillfactor=90,drop_existing=on)
    原地重新生成索引不能改变已存在的索引的列,也无法改变索引类型。
    在默认情况下,重新生成索引是脱机(offline)操作。
    重新生成聚集索引在整个操作期间都需要排他锁,意味着其他进程无法读写这个表。
    重新生成非聚集索引需要共享锁,意味着对该表的写操作将被阻塞,而且操作期间索引不可用。
    MSSQL SERVER2008企业版支持联机索引操作(online index operation),允许你联机创建、重新生成或删除索引,实际上就是SQL SERVER在幕后维护了两个索引,完成该操作后用新索引覆盖旧索引。联机索引操作要求数据库中有足够的空间,而且比脱机操作更慢。
    alter index idx_cl_od on dbo.Orders rebuild with(fillfactor=90, online=on)重新组织索引涉及一个冒泡排序算法,没有完全重新生成索引理想,并且要生成更多的日志,因此通常它会更慢,但消耗的系统资源少,不如重新生成索引来得彻底。只影响索引的叶级,并且总是联机执行。
    alter index idx_cl_od on dbo.Orders reorganize一般而言,索引的逻辑碎片<30%的时候用重新组织,超过用重新生成。