SQL SERVER資料壓縮技術引領資料庫新潮流

iSQlServer發表於2008-12-17
在資料庫應用中,系統效能的瓶頸主要是在磁碟IO上,相比於CPU速度的不斷提高(摩爾定律)和多核CPU的普及,以及資料的迅速增長,磁碟IO的效能提高卻很慢,這也導致磁碟IO的瓶頸現象愈發嚴重,使得提高資料庫效能的努力遇到了很大障礙。於是各大資料庫廠商都是絞盡腦汁,想盡各種辦法來提高資料庫的效能,一種以時間來換空間的優化技術——資料壓縮技術正慢慢變得越來越流行。資料壓縮技術對於資料庫而言,既能加快讀取的速度,又降低了磁碟的儲存消耗空間,可謂一舉兩得,但同時也不能忽視資料壓縮/解壓縮帶來的額外CPU和時間的消耗。
     事實上,在資料庫中採用壓縮技術並不是什麼新想法,早在上世紀八十年代,就有很多學者做過這方面的研究(參見後附的相關論文)。由於當時的軟體和硬體的條件所限,這些早期的嘗試並沒有取得顯著的成功。但隨著人類邁入二十一世紀,計算機在軟硬體方面都有了長足的進步,尤其是多核CPU的普及,使得資料壓縮技術進入資料庫的障礙不在存在。
    Oracle從9i開始就引入了表級的壓縮技術(Table Compression in Oracle9i Release2),但存在很多限制,只能對批量裝載操作涉及的資料進行壓縮,普通的DML操作的 資料是無法壓縮的。這應該是對於寫操作的壓縮難題沒有解決,一直遺留到Oracle11g,總算是解決了關係資料壓縮的寫效能問題(Data Compression in Oracle)。Oracle11g推出了一個叫做Advance Compression的元件,全面支援普通表壓縮和非結構化資料壓縮。根據Oracle的宣傳,“ 相比在無壓縮格式下儲存資料,新的Oracle資料壓縮技術能夠確保以較小的開銷節省三倍以上的磁碟儲存空間。”
    在三大資料庫SQL Server、Oracle和DB2中,DB2的一個劣勢就特別耗儲存空間,需要更多的磁碟空間,因此DB2當然不會對資料壓縮技術視而不見。事實上,IBM並非第一次在DB2中使用資料壓縮技術,但之前的嘗試似乎並不成功,直到DB2 Viper(DB2 9)中內嵌代號為“Venom”的資料壓縮技術,DB2中的資料壓縮技術才真正成熟。GY'uo(gj Venom壓縮技術實際上承襲自IBM的大型計算機資料庫,通過應用行壓縮(row compression)技術和基於字典的壓縮演算法來壓縮資料物件。IBM宣稱,基於資料行的壓縮技術將“讓Oracle基於表的壓縮功能相形見絀”,它能夠把大型資料庫需要的儲存空間減少一半,在某些情況下壓縮比甚至可以高達72%。
    相比於Oracle和DB2中很早就開始嘗試使用資料壓縮技術,SQL Server就顯得有點“麻木不仁”了,一直沒有什麼動作。直到Oracle 11g和DB2 Viper的相繼推出,並且將資料壓縮技術作為主要的亮點進行大肆宣傳,微軟終於也坐不住了。微軟最早的嘗試是在SQL Server 2005 SP2中推出的基於vardecimal格式的儲存改進(Reducing Database Size by Using Vardecimal Storage Format),但這僅僅是針對於Decimal和Numeric資料型別的儲存優化,還算不得一般意義上資料壓縮。從目前微軟透露出的資訊來看,即將於明年一季度推出的SQL Server 2008(代號Katmai)才可能是微軟第一次真正在資料庫中引入資料壓縮技術(SQL Server 2008 Data Compression)。
    雖然在SQL Server 2008最近的July CTP中我們仍然不能看到資料壓縮的功能,但根據微軟的宣傳,資料壓縮將是SQL Server 2008的一個主要新增特性,其主要的目的是減小表的尺寸。在SQL Server 2008中,使用資料壓縮的好處包括以下幾點:
        (1)通過減少I/O和提高快取命中率來提升查詢效能
        (2)提供對真實際資料2倍到7倍的壓縮比率
        (3)和其他特點是正交的
        (4)對資料和索引都可用

      據微軟所說,使用壓縮時會輕微的增加CPU的使用,整個系統的效能會因為I/O的減少而得到提升,對此我們也只能拭目以待了。


    SQL Server 2005 SP2

    (1) Reducing the Size of your Database in SQL Server 2005/SP2
    (2) Enabling vardecimal storage format
    (3) Estimating the space savings with vardecimal storage format
    (4) Vardecimal Storage Format and its implications on Backup/Recovery
    (5) Boundary conditions for enabling vardecimal storage format
    (6) Data row before and after vardecimal storage format
    (7) Reducing Database Size by Using Vardecimal Storage Format


    SQL Server 2008

    (1) SQL Server 2008 Data Compression
    (2) Data Compression: Why Do we need it?
    (3) Data compression techniques and trade offs
    (4) Katmai (Sql 2008) - Data Compression (including Backup Compression)

    來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-512213/,如需轉載,請註明出處,否則將追究法律責任。

    相關文章