iT邦幫忙

DAY 12
6

SQL SERVER 2008效能監控與最佳化系列 第 12

Day12_淺談Index與DataCompression

我們可以對Index進行資料壓縮,一旦啟用資料壓縮可以減少IO,但相對的在SELECT、UPDATE、DELETE、INSERT也會增加CPU負擔,所以要評估查詢效能與異動資料的效能後才決定是否要啟用資料壓縮。
Data Compression(資料壓縮)是SQL SERVER2008才有的功能,當SQL SERVER去儲存體讀取資料時會產生IO,而資料壓縮是使用CPU來壓縮資料,讓一個Page能夠儲存更多的資料,如此當SQL SERVER再讀取資料時,就能夠讀取較少的PAGE而減少IO並增加效能。

資料壓縮可以分為Page Compression(頁壓縮)與Row Compression(資料列壓縮)

Row Compression主要的行為:

  1. 壓縮中繼資料。
  2. 將儲存固定資料格式(如CHAR)使用可變長度格式(VARCHAR)來儲存:例如某一個資料是CHAR(50),如果使用Row Compression時,會以VARCHAR(8)來存來存資料。
    Page Compression主要的行為:
  3. 資料列壓縮
  4. 前置詞壓縮:如果有三筆資料為A00B12、A00B13與A00B14,那麼A00B只存一次,然後用代號與12、13與14對映,即可達到壓縮的效果。
    壓縮前:A00B12、A00B13與A00B14
    壓縮後:
    前置詞:A00B代號X
    資料:X12、X13與X14
  5. 字典壓縮:原理與前置詞壓縮一樣,但是範圍不限定於資料行,而是整個Page。

資料壓縮的對象:

  1. Table
  2. 具有Clustered Index的Table
  3. Nonclustered Index
  4. Index View

此外我們必須注意如果有資料異動的情況(SELECT、UPDATE、DELETE、INSERT)時,特別是大量匯入資料會增加CPU的負擔。

總結來說:我們可以對Index進行資料壓縮來減少IO,但是一旦啟用資料壓縮,相對的在SELECT、UPDATE、DELETE、INSERT也會增加CPU負擔,所以要評估查詢效能與異動資料的效能後才決定是否要啟用資料壓縮。

鐵人賽全系列文張


上一篇
Day11_淺談Index與Statistics
下一篇
Day13_實做維護Fragmentation
系列文
SQL SERVER 2008效能監控與最佳化30

尚未有邦友留言

立即登入留言