当数据库是比较大的,而当你想备份,我们可以启动数据库备份压缩。这项由于备份文件比较小的压缩,所以整个备份的更快的速度,同时还低了磁盘空间的消耗。
当然还有一方面。肯定会添加cpu的消耗。只是一般的server都是多核。所以实际上对系统不会有大的影响。
事实上。不仅能够在备份的时候压缩,在SQL Server 2008中。我们还能够对表和索引进行压缩,以下通过压缩前、压缩后的比較。来展示SQL Server 2008强大的表及索引的压缩功能。
这里在公司測试数据库找了一个中型的表,共同拥有943万多条记录。
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)
SP_SPACEUSED 'TB_WCB' /* name rows reserved data index_size unused TB_WCB 9439661 497784 KB 167168 KB 328120 KB 2496 KB */
4、表压缩前后的对照
压缩前数据大小是412M(data字段的值就是表数据的大小,而index_size是索引的大小,两者是不同的),而在压缩后是 167M,压缩后表的大小仅仅是原来表的40%,效果非常明显,并且因为这个表中大部分字段仅仅是id,相对而言反复值还不算多的,假设反复值很多其它,那么压缩效果会更好。
可是,我们看到,索引的大小(index_size)基本上没什么变化。于是我们继续进行索引的压缩:
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。那么读取速度肯定会更快,并且因为占用的空间小了,也能够让很多其它的数根据网页缓存在存储器,进一步提高系统的整体性能。
版权声明:本文博主原创文章。博客,未经同意不得转载。