码迷,mamicode.com
首页 > 数据库 > 详细

【SQL Server性能优化】SQL Server 2008之表压缩

时间:2014-09-04 19:03:40      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:io   数据   sp   on   c   size   数据库   sql   res   


当数据库比较大,而要进行备份时,我们可以启动数据库备份的压缩,这样减少对于磁盘空间的消耗。


其实,不仅可以在备份的时候压缩,在SQL Server 2008中,我们还可以对表进行压缩,下面通过压缩前、压缩后的比较,来展示SQL Server 2008强大的表压缩功能。


这里在测试数据库找了一个较大的表,共有9439661 条记录,

1、压缩前表的大小

SP_SPACEUSED 'TB_WCB'

/*
name	            rows	    reserved	data	   index_size	unused
TB_WCB	            9439661    	746016 KB	412216 KB	329944 KB	3856 KB
*/


2、压缩表大小

这里启用的是row 级别的压缩

ALTER TABLE TB_WCB
rebuild
WITH (DATA_COMPRESSION =ROW)


3、压缩后的表大小

SP_SPACEUSED 'TB_WCB'

/*
name	            rows	    reserved	data	   index_size	unused
TB_WCB	            9439661    	497784 KB	167168 KB	328120 KB	2496 KB
*/

4、表压缩后的对比

从1中可以看到,压缩前data大小是412M,而在压缩后是 167M,压缩后表的大小只是原来表的40%,效果很明显,而且由于这个表中大部分字段只是id,相对而言重复值还不算多的。

但是,我们看到,索引的大小基本上变化不大,于是我们继续进行索引的压缩:


5、压缩索引

alter index IDX_TB_WCB_ID on TB_WCB
rebuild
with(data_compression=row)

6、索引压缩后的对比

SP_SPACEUSED 'MS_VISIT_QST_OPT'

/*
name	            rows	    reserved	data	    index_size	unused
TB_WCB	            9439661    	317208 KB	167168 KB	149872 KB	168 KB
*/

我们发现,索引压缩前大小是329M,而在压缩后是 149M,压缩比例为45%,效果也很明显。


通过表和索引的压缩,我们可以减小表占用的磁盘空间,让更多的数据页缓存到内存中,显著提高IO效率。

【SQL Server性能优化】SQL Server 2008之表压缩

标签:io   数据   sp   on   c   size   数据库   sql   res   

原文地址:http://blog.csdn.net/sqlserverdiscovery/article/details/39056541

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!