如何避免SHRINKDATABASE & SHRINKFILE 产生索引碎片(转载)
我们在建立的Job中通常使用如下的语法
DBCC SHRINKDATABASE (N'DB', 10,TruncateOnly)
其中TruncateOnly的用处是把:“将文件末尾的所有可用空间释放给操作系统,但不在文件内部执行任何页移动”,
所以此时前面指定的“10”(target_percent),将不起作用,由于删除数据等作业导致的大量的空闲的数据页,将不会被回收,上面的语句的作用,只能把文件结尾部分有限的空闲数据页回收。也就不能完全达到数据库收缩的作用了。
建议的做法如下:
先通过DBCC SHRINKDATABASE (N'DB', 10) WITH NO_INFOMSGS 对数据文件中的数据页进行整理,
然后再通过dbcc shrinkfile(DB_Data, truncateonly)
dbcc shrinkfile(DB_Log, truncateonly)
分别对数据库数据文件和Log文件收缩,这样可以真正达到数据库收缩的目的
2. Index的重建
通常我们对数据库进行收缩后会增加Index的碎片的产生,同时也就降低了数据的查询速度。
我们可以通过下面的Script,查看Table的索引的状况
DBCC SHOWCONTIG(ipprhm) WITH ALL_INDEXES
DBCC SHOWCONTIG scanning 'ipprhm' table...
Table: 'ipprhm' (1009438670); index ID: 1, database ID: 15
TABLE level scan performed.
- Pages Scanned................................: 13746
- Extents Scanned..............................: 1732
- Extent Switches..............................: 3179
- Avg. Pages per Extent........................: 7.9
- Scan Density [Best Count:Actual Count].......: 54.06% [1719:3180]
- Logical Scan Fragmentation ..................: 67.92%
- Extent Scan Fragmentation ...................: 57.16%
- Avg. Bytes Free per Page.....................: 2177.7
- Avg. Page Density (full).....................: 73.09%
DBCC SHOWCONTIG scanning 'ipprhm' table...
Table: 'ipprhm' (1009438670); index ID: 15, database ID: 15
LEAF level scan performed.
- Pages Scanned................................: 79
- Extents Scanned..............................: 18
- Extent Switches..............................: 21
- Avg. Pages per Extent........................: 4.4
- Scan Density [Best Count:Actual Count].......: 45.45% [10:22]
- Logical Scan Fragmentation ..................: 7.59%
- Extent Scan Fragmentation ...................: 83.33%
- Avg. Bytes Free per Page.....................: 1397.4
- Avg. Page Density (full).....................: 82.73%
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
从上面的结果可以看出,扫描密度比较低和逻辑扫描碎片比较高,所以需要进行Index碎片整理。
整理Index的方式有两种:
DBCC INDEXDEFRAG(DB, TABLE, INDEX) WITH NO_INFOMSGS 和
DBCC DBREINDEX(TABLE, '', 0)
INDEXDEFRAG是在线重整Index,不会对Table锁定,但是由于INDEXDEFRAG是对Index的重组,所以Index的数据页不一定是连续的。
DBREINDEX会对Table进行锁定,重建索引。
如何避免SHRINKDATABASE & SHRINKFILE 产生索引碎片(转载)的更多相关文章
- 提升SQL Server速度整理索引碎片
转载:http://wenku.baidu.com/view/f64c8a707fd5360cba1adbea.html SQL Server2005索引碎片分析和解决方法 毫无疑问,给表添加索引 ...
- sqlserver2008 如何定时清理索引碎片
sqlserver2008 如何定时清理索引碎片 查询索引引起的表垃圾碎片sql脚本: SELECT object_name(a.object_id) [TableName] ,a.index_id ...
- 利用sys.dm_db_index_physical_stats查看索引碎片等数据(转)
我们都知道,提高sql server的数据查询速度,最有效的方法,就是为表创建索引,而索引在对数据进行新增,删除,修改的时候,会产生索引碎片,索引碎片多了,就需要重新组织或重新生成索引,以达到索引的最 ...
- SQL Server通过整理索引碎片和重建索引提高速度
本文章转载:http://database.51cto.com/art/201108/282408.htm SQL Server数据库中,当索引碎片太多时,就会拖慢数据库查询的速度.这时我们可以通过整 ...
- SqlServer索引碎片
1.产生碎片的操作 通过sys.dm_index_physical_stats来查看,索引上的页不在具有连续性时就会产生碎片,碎片是索引上页拆分的物理结果. (1).插入操作: INSERT操作在聚集 ...
- Oracle索引碎片检查及定期重建常用表的索引
背景说明: 今天查阅书籍时,偶然间发现“在对某个索引行执行删除操作时,只是为该行增加了一个删除标记,这个索引行并不会释放它的存储空间,Insert产生的新的索引行也不能被插入到该位置.索引列的修改过程 ...
- SQL Server2005索引碎片分析和解决方法
SQL Server2005索引碎片分析和解决方法 本文作者(郑贤娴),请您在阅读本文时尊重作者版权. 摘要: SQL Server,为了反应数据的更新,需要维护表上的索引,因而这些索引会形成碎片.根 ...
- 转: SQL Server索引的维护 - 索引碎片、填充因子
转:http://www.cnblogs.com/kissdodog/archive/2013/06/14/3135412.html 实际上,索引的维护主要包括以下两个方面: 页拆分 碎片 这两个问题 ...
- Oracle查询索引碎片及数据表空间使用情况
--检查索引碎片情况,只能对单个表进行分析. --需要注意块的大小.索引的pctfree的值的大小.rowid的长度的不同,根据不同的情况修改相应的值 select index_name, c.NMB ...
随机推荐
- Jquery初体验一
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- let‘s encrypt之nginx-https没有小锁
1.使用let's encrypt 加密后的nginx,访问的时候,发现没有小锁,chrome中: 火狐浏览器上: 会看到如上信息,这是因为css.图片或javascript任然通过http提供,可以 ...
- ABB机器人---PCSDK简介
BB机器人为用户提供了大量便捷的二次开发及应用工具,PCSDK就是其中一项. 1) 首先,机器人使用PCSDK,必须要有pc interface选项. 2)此处举例使用C#编写简单界面,实现与机器人数 ...
- SQL SERVER 快捷键收录
1.大小写转换快捷键 Ctrl+Shift+U 转为大写 Ctrl+Shift+L 转为小写
- 【游记】CCHO TY国初划水记
没想到第一篇游记竟然是化学国初(其实是上次SXACM时候懒得写 DAY0 一下午做了5个小时的校车,服务区水真贵 肝了4个小时模拟题,颠到崩溃. 下榻在距离山大附不远的一个酒店,高三人好多哇,我们年级 ...
- Java基础——反射
今天学到Java基础中的反反射.依照我学习后的个人理解呢,反射就是一套获取类.属性.方法等的工具吧.(其实,感觉学完反射后,有点像喝凉水,解渴但确实我也没体会出它有什么味道,我可能没有学到精髓吧.自己 ...
- 【Linux】安装openssh-server依赖openssh-client版本错误的解决办法
这是因为,openssh-server是依赖于openssh-clien的,ubuntu自带了openssh-client,自带的openssh-clien与所要安装的openssh-server所依 ...
- 撩课-Web大前端每天5道面试题-Day33
1.CommonJS 中的 require/exports 和 ES6 中的 import/export 区别? CommonJS 模块的重要特性是加载时执行, 即脚本代码在 require 的时候, ...
- 杭电acm习题分类
专注于C语言编程 C Programming Practice Problems (Programming Challenges) 杭电ACM题目分类 基础题:1000.1001.1004.1005. ...
- NGINX: 统计网站的PV、UV、独立IP
做网站的都知道,平常经常要查询下网站PV.UV等网站的访问数据,当然如果网站做了CDN的话,nginx本地的日志就没什么意义了,下面就对nginx网站的日志访问数据做下统计: 概念: UV(Uniqu ...