實現SQL Server 2008資料壓縮
首先可能需要討論的問題就是為什麼在儲存成本不斷降低的今天,微軟還要煞費苦心地在SQL Server中實現並且不斷改進資料壓縮技術呢?
儘管儲存成本已經不再是傳統意義上的首要考慮因素,但是這並不代表資料庫尺寸不是一個問題,因為資料庫尺寸除了會影響到儲存成本之外,還極大地關聯到管理成本和效能問題。
首先我們來討論為什麼會有管理成本的問題?因為資料庫需要備份,資料庫的尺寸越大,那麼備份時間就會越長,當然另外一點就是消耗的備份硬體成本也會隨之提高(包括需要的備份介質成本和為了滿足備份視窗而需要更高階的備份裝置帶來的採購成本),還有一種管理成本就是資料庫的維護成本,例如我們經常需要完成的DBCC任務,資料庫尺寸越大,我們就需要更多的時間來完成這些任務。
接著我們再看看效能問題。SQL Server在掃描磁碟讀取資料的時候都是按照資料頁為單位進行讀取的,因此如果一張資料頁中包含的資料行數越多,SQL Server在一次資料頁IO中獲得的資料就會越多,這樣也就帶來了效能的提升。
最後考慮儲存的成本,按照原先SQL Server 2005 SP2中vardecimal的壓縮資料為例,30%的空間節省也就意味著30%的儲存成本,而按照SQL Server 2008當前放出的測試資料,採用新的資料壓縮技術可以達到2X-7X的儲存率,再加上如果企業要考慮容災而增加的儲存空間,這樣節省的儲存硬體成本也將是想當可觀的。
SQL Server 2005 SP2為我們帶來了vardecimal功能,這項功能使得原來定長的decimal資料在資料檔案中以可變長的格式儲存,據稱這項功能可以為典型的資料倉儲節省30%的空間,而SQL Server 2008在這一基礎上又進一步增強了資料壓縮功能。SQL Server 2008現在支援行壓縮和頁面壓縮兩種選項,資料壓縮選項可以在以下物件上啟用:
未建立聚簇索引的表
建立聚簇索引的表
非聚簇索引(對錶設定壓縮選項不會影響到該表上的非聚簇索引,因此聚簇索引的壓縮需要單獨設定)
索引檢視
分割槽表和分割槽索引中的單個分割槽
如何使用資料壓縮
SQL Server 2008中的壓縮選項可以在建立表或索引時通過Option進行設定,例如:
CREATE TABLE TestTable (col1 int, col2 varchar(200)) WITH (DATA_COMPRESSION = ROW);
如果需要改變一個分割槽的壓縮選項,則可以用以下語句:
ALTER TABLE TestTable REBUILD PARTITION = 1 WITH (DATA COMPRESSION = PAGE);
如果需要為分割槽表的各個分割槽設定不同的壓縮選項,可以使用以下的語句:(SQL Server 2008可以對不同的分割槽使用不同的壓縮選項,這一點對於資料倉儲應用是非常重要的,因為資料倉儲的事實表通常都會有一個或數個熱分割槽,這些分割槽中的資料經常需要更新,為了避免資料壓縮給這些分割槽上的資料更新帶來額外的處理載荷,可以對這些分割槽關閉壓縮選項)
CREATE TABLE PartitionedTable (col1 int, col2 varchar(200))
ON PS1 (col1)
WITH (
DATA_COMPRESSION = ROW ON PARTITIONS(1),
DATA_COMPRESSION = PAGE ON PARTITION(2 TO 4));
如果是為某個索引設定壓縮選項的話,可以使用:
CREATE INDEX IX_TestTable_Col1 ON TestTable (Col1) WITH (DATA_COMPRESSION = ROW);
如果是修改某個索引的壓縮選項,可以使用:
ALTER INDEX IX_TestTable_Col1 ON TestTable REBUILD WITH (DATA_COMPRESSION = ROW);
SQL Server 2008同時還提供了一個名為sp_estimate_data_compression_savings儲存過程幫助DBA估計啟用壓縮選項後物件尺寸。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-512206/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server 2008中的行壓縮(上)JUSQLServer
- SQL Server 2000/2005/2008刪除或壓縮資料庫日誌的方法SQLServer資料庫
- sql server 資料庫收縮SQLServer資料庫
- SQL Server收縮資料庫SQLServer資料庫
- Java實現壓縮資料夾Java
- SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008SQLServer
- SQL SERVER 2008安全配置SQLServer
- Python實現壓縮和解壓縮Python
- SQL Server2008 R2 資料庫映象配置方案SQLServer資料庫
- 在SQL Server中完美壓縮.mdf檔案DVSQLServer
- Java實現解壓縮檔案和資料夾Java
- SQL Server 2008 R2並行資料倉儲簡介SZSQLServer並行
- 壓縮Word,一鍵實現Word文件壓縮
- SQL Server 2008連線字串寫法大全SQLServer字串
- SQL Server2008程式堵塞處理方法SQLServer
- Sql Server2008R2下載地址SQLServer
- SQL Server 2008資料複製新特性及其帶來的價值(下)XDSQLServer
- SQL Server 收縮日誌SQLServer
- SQL Server資料庫恢復,SQL Server資料恢復,SQL Server資料誤刪除恢復工具SQLRescueSQLServer資料庫資料恢復
- JNI實現圖片壓縮
- SQL server資料庫with as子句與遞迴查詢的實現SQLServer資料庫遞迴
- windows server2008安裝mysql資料庫WindowsServerMySql資料庫
- Analysis Services基礎知識——深入SQL Server 2008SQLServer
- 區分SQL Server 2008 R2資料中心和並行資料倉儲版本WBSQLServer並行
- 用ASP實現線上壓縮與解壓縮功能程式碼
- 哈夫曼實現檔案壓縮解壓縮(c語言)C語言
- SQL Server實戰四:查詢資料庫的資料SQLServer資料庫
- Mac安裝壓縮版MySQL ServerMacMySqlServer
- 如何在HDFS中進行資料壓縮以實現高效儲存?
- 使用SQL SERVER儲存過程實現歷史資料遷移SQLServer儲存過程
- EXCEL資料上傳到SQL SERVER中的簡單實現方法ExcelSQLServer
- win10怎麼安裝sql server2008 r2_win10如何安裝sql server2008 r2Win10SQLServer
- 0910 – iPaste 搞定資料壓縮AST
- 利用 canvas 實現圖片壓縮Canvas
- 高效資料移動指南 | 如何快速實現資料庫 SQL Server 到 Dameng 的資料同步?資料庫SQLServer
- linux 下壓縮與解壓資料夾Linux
- 資料庫映象 (SQL Server)資料庫SQLServer
- SQL server 修改表資料SQLServer
- SQL Server資料庫安全SQLServer資料庫