首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2008 資料列壓縮:建立、修改與空間節省實測

     編輯:關於SqlServer

資料列壓縮簡介

SQL Server 2008 企業版/開發版支援資料列壓縮,將固定長度型別視為變長儲存、移除零值/空值儲存開銷、優化數值型別位元組長度,在資料列層級壓縮,不改變頁面結構。

啟用方式

建立新表啟用


CREATE TABLE [Compressed Table]
(id int, FName varchar(100), LName varchar(100))
WITH (DATA_COMPRESSION = ROW);

現有表啟用 (重建)


ALTER TABLE [Existing Table] REBUILD WITH (DATA_COMPRESSION = ROW);
-- 分區表可指定分區
ALTER TABLE [Partitioned Table] REBUILD PARTITION = 2 WITH (DATA_COMPRESSION = ROW);

實測空間節省

測試資料:30,003 列,欄位 int, varchar(100), varchar(100),重複值 'Adam','Smith' 等。

表格保留空間資料空間索引空間未使用壓縮率
未壓縮968 KB944 KB8 KB16 KB基準
建立時啟用 ROW584 KB576 KB8 KB0 KB39.7%
ALTER REBUILD 啟用 ROW592 KB560 KB8 KB24 KB38.8%

資料空間從 944 KB 降至 ~570 KB,節省近 40%。索引空間不變(非叢集索引未壓縮)。

壓縮層級比較

層級範圍CPU 開銷適用對象
ROW資料列低OLTP、頻繁更新、固定長型別多、NULL 多
PAGE頁面 (含 ROW + 前綴/字典壓縮)中資料倉庫、唯讀、重複值極高
BACKUP備份檔案高 (備份時)備份傳輸/儲存節省

注意:啟用壓縮後,INSERT/UPDATE/DELETE 需額外 CPU 進行壓縮/解壓縮,但 I/O 減少通常可抵銷。建議先在測試環境基準測試。

查詢壓縮狀態


SELECT OBJECT_NAME(object_id) AS TableName, index_id, data_compression_desc
FROM sys.partitions
WHERE data_compression_desc != 'NONE';

總結

資料列壓縮是 SQL Server 2008 企業版極具性價比的功能:無需修改應用程式、透過 ALTER TABLE ... REBUILD 即時啟用、典型節省 30%~50% 資料空間、減少 I/O 與記憶體壓力。配合分區表逐分區啟用,可控制重建影響範圍。資料倉庫場景建議直接上頁面壓縮獲取更高壓縮比。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved