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

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

探密微軟SQL Server 2008中新壓縮特性

2024-08-31 00:53:17
字體:
來源:轉載
供稿:網友
  導語:SQLServer2005SP2為我們帶來了vardecimal功能,這項功能使得原來定長的decimal數據在數據文件中以可變長的格式存儲,據稱這項功能可為數據倉庫節省空間,而SQLServer2008在這基礎上增強了數據壓縮功能。


  SQLServer中的數據壓縮功能,最早是從SQLServer2005開始,在企業版和開發版中增加了一種叫做vardecimal的新存儲格式,這通過該功能應用可以影響到decimal和numeric字段。如果數據庫里的表含有decimal和numeric類型數據,用戶就可以使用vardecimal存儲格式來縮小數據庫的大小。值得注意的是,能夠節省出多少空間取決于數據庫中含有多少decimal或numeric數據列、數據分布情況以及表的大小。



使用數據壓縮

  而正是這個數據壓縮功能,成為SQLServer2008中又一新特性:數據壓縮,利用該特性,可以減小數據表,索引以及分區的子集的大小。但是這個之前在SQLServer2005存在的功能,為何要在新一代版本系統中改進,存儲成本不斷降低的市場環境下,數據壓縮技術能給企業何種好處?


  盡管存儲成本已經不再是企業關注的敏感因素,但是這并不代表數據庫尺寸不會對企業運營中效率有影響,因為數據庫尺寸除了會影響到存儲成本之外,還極大地關聯到管理成本和性能問題。


  首先,因為數據庫需要備份,數據庫的尺寸越大,那么備份時間就會越長,同時消耗的備份硬件成本提升,還有一種管理成本就是數據庫的維護成本。從性能方面,SQLServer在掃描磁盤讀取數據的時候都是按照數據頁為單位進行讀取的,因此如果一張數據頁中包含的數據行數越多,SQLServer在一次數據頁IO中獲得的數據就會越多,這樣也就帶來了性能的提升。


  相對于SQL Server2005SP2中vardecimal的壓縮數據,SQLServer2008當前放出的測試數據,采用新的數據壓縮技術可以達到更高的存儲率,再加上企業對于容災而增加的存儲空間,所有的這些都是SQLServer2008中這一新特性有利一面。


第2頁:兩種壓縮模式

  


  了解壓縮數據真正好處之后,可以感受到概念的滲透,借助數據壓縮,減少了存儲成本,并提高查詢性能,減少I/O和增加緩沖點擊率。可見,這一個功能在應用過程中還是十分有效果的,SQLServer2008中的數據壓縮有兩種應用方式,即行壓縮和頁壓縮,下面對這兩種數據壓縮類型簡單做個對比。



數據壓縮向導過程中選擇壓縮類型

  行壓縮。行壓縮可以將固定長度類型存儲為可變長度存儲類型。例如char(100)列儲存在一個可變長度存儲格式將只使用了存儲量所定義的數據。儲存的“SQLServer2008”,壓縮后只需要存放15個字符,而非全部100個字符,從而節省了85%的存儲空間。這是在SQLServer2005ServicePack2中提供的vardecimal存儲格式的思路的延伸。同時需要注意的是,這種壓縮模式,將對所有數據類型的NULL和0值進行優化,從而使它們不占用任何字節。


  盡管SQLServer2008數據壓縮擴展了這個功能,對所有固定長度的數據類型都進行了處理,包括integer、char和float。現在數據不是以固定大小的字節進行存儲,而是用最小所需的字節,只需要啟用行壓縮功能就可以執行。但是,行壓縮無法處理xml、BLOB和MAX數據類型。


  頁面壓縮模式。這種壓縮功能,建立在行壓縮基礎之上,通過只存儲一次頁面上相同事件字節來將存儲的冗余數據減到最小。使用頁壓縮壓縮表和索引,除了采用行壓縮,還采用了前綴壓縮和字典壓縮。


  數據壓縮會減少的大小您的表格或索引指標,最好是先評估一下壓縮后所能節省的空間。每一個頁都是單獨壓縮的,前綴和字典也存儲在頁內。由于頁是存儲分配的原子單位,將半頁壓縮到四分之一頁是沒有任何意義的,所以,只有在頁的內容快滿的時候才會開始壓縮處理。


  在使用行和頁壓縮時還有一個性能權衡問題,因為CPU使用率會上升,但I/O使用率和內存占用會下降。但這所有的壓縮選項可能成為SQLServer2008企業版專享選項。


第3頁:如何使用數據壓縮


  附錄(如何使用數據壓縮):


  (1)啟用行壓縮


  如果我們要在指定的表上啟用行壓縮,可執行以下語句:


  CREATE TABLE Alpha(col1 int,col2 char(1000))


  WITH (DATA_COMPRESSION = ROW)


  (2)啟用頁壓縮


  如果我們要在指定的分區上啟用壓縮,可執行以下語句:


  CREATE TABLE Alpha_Partition(col1 int,col2 char(1000))


  ON PartitionScheme(col 1)


  WITH


  (DATA_COMPRESSION = PAGE ON)


  PARTITIONS(1-3)


  (3)修改壓縮


  如果要把一個現有的索引修改為使用壓縮,可執行以下語句:


  ALTER INDEX Collndx ON Alpha REBUILD


  WITH (DATA_C0MPRESSION=PAGE)


  ALTER INDEX Collndx ON Alpha REBUILD


  partition = 2


  WITH (DATA_COMPRESSION=PAGE)


  SQL Server 2008中的壓縮選項可以在創建表或索引時通過Option進行設置,例如:


  CREATE TABLE TestTable (col1 int,col2varchar(200))WITH(DATA_COMPRESSION = ROW);


  如果需要改變一個分區的壓縮選項,則可以用以下語句:


  ALTER TABLE TestTable REBUILD PARTITION = 1 WITH(DATACOMPRESSION=PAGE);


  如果需要為分區表的各個分區設置不同的壓縮選項,可以使用以下的語句:(SQLServer2008可以對不同的分區使用不同的壓縮選項,這一點對于數據倉庫應用是非常重要的,因為數據倉庫的事實表通常都會有一個或數個熱分區,這些分區中的數據經常需要更新,為了避免數據壓縮給這些分區上的數據更新帶來額外的處理載荷,可以對這些分區關閉壓縮選項)


  CREATE TABLE PartitionedTable (col1 int, col2varchar(200))


  ON PS1 (col1)


  WITH (DATA_COMPRESSION = ROW ON PARTITIONS(1),


  DATA_COMPRESSION = PAGE ON PARTITION(2 TO 4));


  如果是為某個索引設置壓縮選項的話,可以使用:


  CREATE INDEX IX_TestTable_Col1 ONTestTable(Col1)WITH(DATA_COMPRESSION = ROW);


  如果是修改某個索引的壓縮選項,可以使用:


  ALTER INDEX IX_TestTable_Col1 ONTestTableREBUILDWITH(DATA_COMPRESSION = ROW);


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南昌市| 油尖旺区| 论坛| 子长县| 罗甸县| 湖北省| 修水县| 霍山县| 册亨县| 克东县| 眉山市| 潞西市| 佛教| 迁西县| 贵德县| 鹿泉市| 绵竹市| 大埔区| 夏河县| 望江县| 克东县| 大姚县| 桓台县| 台南市| 桦川县| 漯河市| 河北省| 洪泽县| 视频| 嘉峪关市| 昌乐县| 惠安县| 南丹县| 汉川市| 望谟县| 肥东县| 皋兰县| 万全县| 五常市| 如东县| 如东县|