背景
SQL Server 2008 正式發行前六個月,微軟釋出最後社區測試版 (RC0),讓企業在安全環境 (如虛擬伺服器) 評估新功能,核心亮點為資料壓縮技術。
壓縮技術演進
IBM DB2 先驅
- 1998 年開始嘗試,2002 年 DB2 8 正式推出行壓縮:
COMPRESS YES 宣告表需壓縮。
- 原理:將變長欄位以隱藏索引表 (壓縮字典) 取代,但早期版本字典膨脹導致效果適得其反。
微軟差異化路徑
- SQL 2005 推出檔案壓縮 (唯讀資料庫)。
- SQL 2005 SP2 引入 Vardecimal:表層級啟用,decimal/numeric 儲存於列變長區段,非固定長度。語意不變,應用無感知。
- SQL 2008 將 Vardecimal 概念擴展至所有資料類型,底層 row/page 格式重構,Storage Engine 唯一感知元件。
SQL 2008 壓縮架構
行級壓縮
- 中繼資料從 2 位元組/欄降至 3 位元。
- 數值型欄位依實際大小儲存:小整數 1 位元組,大值最多 4 位元組。
頁面級壓縮
- 欄位前綴壓縮:同頁同欄重複前綴 (如 'Chad') 僅存一次,其他列以索引引用。
- 頁面字典壓縮:針對前綴壓縮後仍重複片段建立字典,行內值以字典索引取代。
- 實測 25 位元組壓縮至 17 位元組,節省 30%+。
每頁獨立壓縮,字典儲存頁內,頁面近滿才觸發壓縮。
效能權衡
CPU 使用率上升,但 I/O 與記憶體壓力下降,整體系統效能通常提升。應用語意完全不變,無需修改程式碼即可受益。
結語
SQL Server 2008 透過行/頁面級壓縮與 Vardecimal 演進,構建適用於作用中資料庫的高效壓縮架構,大幅降低儲存與 I/O 成本。