SQLServer提供了一个数据库命令——DBCC SHOWCONTIG——来确定一个指定的表或索引是否有碎片。 
示例:
显示数据库里所有索引的碎片信息
DBCC SHOWCONTIG WITH ALL_INDEXES

显示指定表的所有索引的碎片信息
DBCC SHOWCONTIG (authors) WITH ALL_INDEXES

显示指定索引的碎片信息
DBCC SHOWCONTIG (authors,aunmind)

DBCC 执行结果:
扫描页数:如果你知道行的近似尺寸和表或索引里的行数,那么你可以估计出索引里的页数。看看扫描页数,如果明显比你估计的页数要高,说明存在内部碎片。

扫描扩展盘区数:用扫描页数除以8,四舍五入到下一个最高值。该值应该和DBCC SHOWCONTIG返回的扫描扩展盘区数一致。如果DBCC SHOWCONTIG返回的数高,说明存在外部碎片。碎片的严重程度依赖于刚才显示的值比估计值高多少。

扩展盘区开关数:该数应该等于扫描扩展盘区数减1。高了则说明有外部碎片。

每个扩展盘区上的平均页数:该数是扫描页数除以扫描扩展盘区数,一般是8。小于8说明有外部碎片。

扫描密度[最佳值:实际值]:DBCC SHOWCONTIG返回最有用的一个百分比。这是扩展盘区的最佳值和实际值的比率。该百分比应该尽可能靠近100%。低了则说明有外部碎片。

逻辑扫描碎片:无序页的百分比。该百分比应该在0%到10%之间,高了则说明有外部碎片。

扩展盘区扫描碎片:无序扩展盘区在扫描索引叶级页中所占的百分比。该百分比应该是0%,高了则说明有外部碎片。

每页上的平均可用字节数:所扫描的页上的平均可用字节数。越高说明有内部碎片,不过在你用这个数字决定是否有内部碎片之前,应该考虑fill factor(填充因子)。

平均页密度(完整):每页上的平均可用字节数的百分比的相反数。低的百分比说明有内部碎片。

解决碎片问题 :
1. 删除并重建索引 
2. 使用DROP_EXISTING子句重建索引 
3. 执行DBCC DBREINDEX 
4. 执行DBCC INDEXDEFRAG

删除并重建索引 :

用DROP INDEX和CREATE INDEX或ALTER TABLE来删除并重建索引有些缺陷包括在删除重建期间索引会消失。在索引删除重建时,对于查询它不在可用,查询性能也许会受到明显的影响,直到重建索引为止。另一个潜在的缺陷是当都请求索引的时候会引起阻塞,直到重建索引为止。通过其他的处理也能解决阻塞,就是索引被使用的时候不删除索引。另一个主要的缺陷是在用DROP INDEX和CREATE INDEX重建聚集索引时会引起非聚集索引重建两次。删除聚集索引时非聚集索引的行指针会指向数据堆,聚集索引重建时非聚集索引的行指针又会指回聚集索引的行位置。

删除并重建索引的确有一个好处就是通过重新排序索引页,使索引页紧凑并删除不需要的索引页来完全重建索引。你也许需要考虑那些内部和外部碎片都很高的情况下才使用,以使那些索引回到它们应该在的位置。

使用DROP_EXISTING子句重建索引 :

为了避免在重建聚集索引时表上的非聚集索引重建两次,可以使用带DROP_EXISTING子句的CREATE INDEX语句。这个子句会保留聚集索引键值,以避免非聚集索引重建两次。和删除并重建索引一样,该方法也可能会引起阻塞和索引消失的问题。该方法的另一个缺陷是也强迫你去分别发现和修复表上的每一个索引。

除了和上一个方法一样的好处之外,该方法的好处是不必重建非聚集索引两次。这样可以对那些带约束的索引提供正确的索引定义以符合约束的要求。

执行DBCC DBREINDEX :

DBCC DBREINDEX类似于第二种方法,但它物理地重建索引,允许SQLServer给索引分配新页来减少内部和外部碎片。DBCC DBREINDEX也能动态的重建带约束的索引,不象第二种方法。

DBCC DBREINDEX的缺陷是会遇到或引起阻塞问题。DBCC DBREINDEX是作为一个事务来运行的,所以如果在完成之前中断了,那么你会丢失所有已经执行过的碎片。

执行DBCC INDEXDEFRAG :

DBCC INDEXDEFRAG(在SQLServer2000中可用)按照索引键的逻辑顺序,通过重新整理索引里存在的叶页来减少外部碎片,通过压缩索引页里的行然后删除那些由此产生的不需要的页来减少内部碎片。它不会遇到阻塞问题但它的结果没有其他几个方法彻底。这是因为DBCC INDEXDEFRAG跳过了锁定的页且不使用任何新页来重新排序索引。如果索引的碎片数量大的话你也许会发现DBCC INDEXDEFRAG比重建索引花费的时间更长。DBCC INDEXDEFRAG比其他方法的确有好处的是在其他过程访问索引时也能进行碎片整理,不会引起其他方法的阻塞问题。

SqlServer数据库碎片整理——BCC SHOWCONTIG相关推荐

  1. CMDS目的端数据库碎片整理记录

    CMDS目的端数据库碎片整理记录 看看数据库里面需要做整理的表有哪些,条件可以根据需求稍微改动一下 SQL> select * from ( 2 select a.owner, 3 a.tabl ...

  2. dbcc dbreindex server sql_SQL Server数据库碎片整理

    碎片产生 在SQL Server中,存储数据的最小单位是页,每一页所能容纳的数据为8060字节.而页的组织方式是通过B树结构 SQL Server向每个页内存储数据的最小单位是表的行(Row) 当叶子 ...

  3. sql server 碎片整理——DBCC SHOWCONTIG

    转自: 1.http://blog.sina.com.cn/s/blog_6d2675450101ks6i.html 2.http://www.cnblogs.com/CareySon/archive ...

  4. SQL Server数据库碎片整理

    碎片产生   在SQL Server中,存储数据的最小单位是页,每一页所能容纳的数据为8060字节.而页的组织方式是通过B树结构   SQL Server向每个页内存储数据的最小单位是表的行(Row) ...

  5. Mysql碎片恢复_mysql数据库碎片整理

    https://blog.csdn.net/liumangjuntuan/article/details/82379660 https://www.cnblogs.com/wanbin/p/95554 ...

  6. mongodb数据库磁盘碎片整理。

    更新主题:数据库磁盘碎片整理. 更新说明:服务器mongodb数据库磁盘碎片整理. 更新时间:10.17-10.26 更新步骤: 从节点操作 关闭monitor监控程序: 确认是否从节点: Admin ...

  7. 离线对活动目录数据库进行碎片整理

    实验平台:windows server 2008 Enterprise 32位 参考视频:technet中文站点 注意:此功能在2003中是没有的,所以实验的时候一定要下载一个2008的系统. 对AD ...

  8. mysql文件碎片整理_对数据库磁盘驱动器进行碎片整理 | Microsoft Docs

    对 SQL Server 数据库磁盘驱动器进行碎片整理 12/02/2020 本文内容 本文提供了有关 SQL Server 数据库驱动器的碎片整理的一些指南. 原始产品版本:   SQL Serve ...

  9. mysql 碎片率_详解Mysql数据库表碎片计算公式、碎片整理方法,值得收藏

    概述 我们经常会使用VARCHAR.TEXT.BLOB等可变长度的文本数据类型.不过,当我们使用这些数据类型之后,就不得不做一些额外的工作--MySQL数据表碎片整理. 每当MySQL从你的列表中删除 ...

最新文章

  1. CNN架构复现实战 | 附视频和github项目
  2. [转] 电子技术·笔记1(9月份)
  3. 【BZOJ-2342】双倍回文 Manacher + 并查集
  4. Nginx如何限流?
  5. iOS夯实:RunLoop
  6. 我的算法学习(一)----数组的全排列
  7. html body 边框,html – 如何在表的tbody / thead部分创建边框?
  8. 2019 sample-free(样本不平衡)目标检测论文阅读笔记
  9. fedora nginx php,在fedora16下安裝nginx + php-fpm
  10. idea启动项目报错 : 编译失败:内部java编译器错误
  11. WCDMA 基本信令流程
  12. leetcode题解持续更新
  13. 时序分析-利用深度时空残差网络预测城市范围的交通流量
  14. 圆和长方形周长相等谁的面积大_周长相等的长方形正方形和圆谁面积最大,谁面...
  15. 一个简单的java代码,输入当前星期,输出今天是星期几
  16. H5页面打开微信小程序
  17. ROS2网络课程资料分享2019.10.26
  18. 苹果ios用js的Date() 获取到的日期时间 显示NaN
  19. 【034】翼辉信息获得“核高基”重大专项支持
  20. Android学习|控件——Notification通知

热门文章

  1. zxing 自动放大_zxing图像拉伸问题解决方案
  2. 网络服务(4)——以太网配置IP、网关
  3. 研究移动用户APP操作行为的相关关系分析
  4. [转]人不成熟的六大特征
  5. 网页方式打印 EMS 等快递单的经验和教训
  6. 做个小钢琴~利用AudioContext获取振荡器并封装成光遇钢琴的样子
  7. 手机迅雷mini使用释疑
  8. ERP、SCM、CRM的区别和联系?
  9. py获取前端的参数_获取百度指数
  10. Scipy文件输入/输出mat,wav,mp3