標籤:io 資料 sp on c size 資料庫 sql res
當資料庫比較大,而要進行備份時,我們可以啟動Database Backup的壓縮,這樣減少對於磁碟空間的消耗。
其實,不僅可以在備份的時候壓縮,在SQL Server 2008中,我們還可以對錶進行壓縮,下面通過壓縮前、壓縮後的比較,來展示SQL Server 2008強大的表壓縮功能。
這裡在測試資料庫找了一個較大的表,共有9439661 條記錄,
1、壓縮前表的大小
SP_SPACEUSED 'TB_WCB'/*name rows reserveddata index_sizeunusedTB_WCB 9439661 746016 KB412216 KB329944 KB3856 KB*/
2、壓縮表大小
這裡啟用的是row 層級的壓縮
ALTER TABLE TB_WCBrebuildWITH (DATA_COMPRESSION =ROW)
3、壓縮後的表大小
SP_SPACEUSED 'TB_WCB'/*name rows reserveddata index_sizeunusedTB_WCB 9439661 497784 KB167168 KB328120 KB2496 KB*/
4、表壓縮後的對比
從1中可以看到,壓縮前data大小是412M,而在壓縮後是 167M,壓縮後表的大小隻是原來表的40%,效果很明顯,而且由於這個表中大部分欄位只是id,相對而言重複值還不算多的。
但是,我們看到,索引的大小基本上變化不大,於是我們繼續進行索引的壓縮:
5、壓縮索引
alter index IDX_TB_WCB_ID on TB_WCBrebuildwith(data_compression=row)
6、索引壓縮後的對比
SP_SPACEUSED 'MS_VISIT_QST_OPT'/*name rows reserveddata index_sizeunusedTB_WCB 9439661 317208 KB167168 KB149872 KB168 KB*/
我們發現,索引壓縮前大小是329M,而在壓縮後是 149M,壓縮比例為45%,效果也很明顯。
通過表和索引的壓縮,我們可以減小表佔用的磁碟空間,讓更多的資料頁緩衝到記憶體中,顯著提高IO效率。
【SQL Server效能最佳化】SQL Server 2008之表壓縮