国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

微軟SQL Server 2008 的新壓縮特性

2024-08-31 00:46:02
字體:
來源:轉載
供稿:網友

關于SQL Server壓縮的故事,最早是從SQL Server 2005開始的,在企業版和開發版中增加了一種叫做vardecimal的新存儲格式,這個表級的選項會影響到decimal和numeric字段。當對值的精度要求低于字段可用精度,如在一個decimal(18,9)類型的字段中存儲1.5這個數值時,存儲上就需要有相應的壓縮。從效果上來看,它就是一個varchar類型的數字型版本。

SQL Server 2008所包含的已遠不止這些小技巧:

無論從哪方面來看,SQL Server 2008的數據壓縮都與現在有著巨大的差異(盡管它依然支持或者說包括vardecimal類型)——引起這種差異的真像是,如果你對一個給定的table/index啟用壓縮功能,那么底層的row/page格式將不再相同——是的,就是這樣,你聽得沒錯——如果你使用壓縮(ROW或者PAGE),那么SQL 2008的row/page格式將不同于現有的格式(如果你只是在table/index上使用壓縮的話)。因此,在SQL 2008中,有兩種,沒錯,是兩種可選row/page數據格式。你現在可能會想知道“那么,如果row/page格式改變了,那你們究竟是如何在這么短的時間內,依然有足夠的時間去重新生成SQL Server所有需要識別這些格式的組件的呢?”答案就是我們不需要那樣做——因為Storage Engine是SQL 2008中唯一一個需要知道新的row/page格式的組件。

行級壓縮將大幅減少元數據所需的變量長度,較以前每個字段需要花費2個字節來存儲,現在只要僅僅3個位。字段本身現在也變得更小,在整型字段中存儲像1這樣的數值,只需要一個字節,而大數值則最多只需要4個字節。

行級壓縮則允許在行間共享共有數據。這兩種技術就是列前綴和頁字典:

假設你在一頁的數據行中有一列數據有這些值:‘Chad’、‘Chadwick’、‘Chadly’、‘Chad’、‘Chadster’、‘Chadwick’和‘Chadly’(故意重復的數值)——正如你所見,有相當多的冗余‘前綴’數據在這一頁的同一列的不同行中,是吧?因此,你最終可能會想到這樣的一個場景:將列的前綴‘Chad’存儲在CI結構中,每一個列的最后都指向這個前綴值,最后出現在磁盤上的值會像這樣:‘’,‘1wick’,‘1ly’,‘1ster’,‘1wick’和‘1ly’。

所以,對于上述例子中的含有Chad的同列數值,在經過對“列前綴”值進行計算和存儲后,你可能得到一個會含有如‘1ly’和‘1wick’這些值的頁字典,而真正行內數值則極有可能看上去像這樣:‘’、‘2’、‘3’、‘’、‘1ster’、‘3’和‘2’。通過這種方式,我們讓原本需要大約25個字節來存儲的行數據,減少到只要大約17個字節來存儲,節省30%以上。

每一個頁都是單獨壓縮的,前綴和字典也存儲在頁內。由于頁是存儲分配的原子單位,將半頁壓縮到四分之一頁是沒有任何意義的,所以,只有在頁的內容快滿的時候才會開始壓縮處理。在使用行和頁壓縮時還有一個性能權衡問題,因為CPU使用率會上升,但I/O使用率和內存占用會下降。

Backup Compression是2008的另一個特性,它是通過普通的文件系統型壓縮技術實現的,對于給定的數據庫,只有啟用或者禁用,沒有其它可調節選項。盡管非企業版服務器可以恢復帶壓縮的備份,但這所有的壓縮選項極有可能成為企業版專享選項。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 交口县| 鄢陵县| 陆良县| 扶风县| 吉安县| 东辽县| 商南县| 临朐县| 甘南县| 彭阳县| 濮阳县| 蒙自县| 盖州市| 嘉义县| 建宁县| 湖口县| 德兴市| 永嘉县| 安图县| 电白县| 微山县| 满洲里市| 阳春市| 洛南县| 永清县| 南靖县| 石阡县| 梅河口市| 临桂县| 大余县| 黎川县| 承德县| 万载县| 汝阳县| 秭归县| 临朐县| 霸州市| 新竹县| 昭通市| 娄底市| 杭锦旗|