亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

使用SQL Server 2008中的數據壓縮功能

添加時間:2014-4-1 17:25:50  添加: 思海網絡 

  大家都知道SQL Server 2005 SP2為我們帶來了vardecimal功能,這項功能使得原來定長的decimal數據在數據文件中以可變長的格式存儲,據稱這項功能可以為典型的數據 倉庫節省30%的空間,而SQL Server 2008在這一基礎上又進一步增強了數據壓縮功能。SQL Server 2008現在支持行壓縮和頁面壓縮兩種選項,數據壓縮選項可以在以下對象上啟用:

  未創建聚簇索引的表

  創建聚簇索引的表

 

  非聚簇索引(對表設置壓縮選項不會影響到該表上的非聚簇索引,因此聚簇索引的壓縮需要單獨設置)

  索引視圖

  分區表和分區索引中的單個分區

  為什么需要數據壓縮

  首先可能需要討論的問題就是為什么在存儲成本不斷降低的今天,微軟還要煞費苦心地在SQL Server中實現并且不斷改進數據壓縮技術呢?

  盡管存儲成本已經不再是傳統意義上的首要考慮因素,但是這并不代表數據庫尺寸不是一個問題,因為數據庫尺寸除了會影響到存儲成本之外,還極大地關聯到管理成本和性能問題。

   首先我們來討論為什么會有管理成本的問題?因為數據庫需要備份,數據庫的尺寸越大,那么備份時間就會越長,當然另外一點就是消耗的備份硬件成本也會隨之 提高(包括需要的備份介質成本和為了滿足備份窗口而需要更高級的備份設備帶來的采購成本),還有一種管理成本就是數據庫的維護成本,例如我們經常需要完成 的DBCC任務,數據庫尺寸越大,我們就需要更多的時間來完成這些任務。

  接著我們再看看性能問題。SQL Server在掃描磁盤讀取數據的時候都是按照數據頁為單位進行讀取的,因此如果一張數據頁中包含的數據行數越多,SQL Server在一次數據頁IO中獲得的數據就會越多,這樣也就帶來了性能的提升。

   最后考慮存儲的成本,按照原先SQL Server 2005 SP2中vardecimal的壓縮數據為例,30%的空間節省也就意味著30%的存儲成本,而按照SQL Server 2008當前放出的測試數據,采用新的數據壓縮技術可以達到2X-7X的存儲率,再加上如果企業要考慮容災而增加的存儲空間,這樣節省的存儲硬件成本也將 是想當可觀的。

關鍵字: select 子表樹 企業管理器 DBCC PAGE REVERT

SQL Server 2008中的數據壓縮功能。

  如何使用數據壓縮

  SQL Server 2008中的壓縮選項可以在創建表或索引時通過Option進行設置,例如:     CREATE TABLE TestTable (col1 int, col2 varchar(200)) WITH (DATA_COMPRESSION = ROW);

  如果需要改變一個分區的壓縮選項,則可以用以下語句:     ALTER TABLE TestTable REBUILD PARTITION = 1 WITH (DATA COMPRESSION = PAGE);

   如果需要為分區表的各個分區設置不同的壓縮選項,可以使用以下的語句:(SQL Server 2008可以對不同的分區使用不同的壓縮選項,這一點對于數據倉庫應用是非常重要的,因為數據倉庫的事實表通常都會有一個或數個熱分區,這些分區中的數據 經常需要更新,為了避免數據壓縮給這些分區上的數據更新帶來額外的處理載荷,可以對這些分區關閉壓縮選項)     CREATE TABLE PartitionedTable (col1 int, col2 varchar(200))
    ON PS1 (col1)
    WITH (
    DATA_COMPRESSION = ROW ON PARTITIONS(1),
    DATA_COMPRESSION = PAGE ON PARTITION(2 TO 4));

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

     CREATE INDEX IX_TestTable_Col1 ON TestTable (Col1) WITH (DATA_COMPRESSION = ROW);

  如果是修改某個索引的壓縮選項,可以使用:     ALTER INDEX IX_TestTable_Col1 ON TestTable REBUILD WITH (DATA_COMPRESSION = ROW);

  SQL Server 2008同時還提供了一個名為sp_estimate_data_compression_savings存儲過程幫助DBA估計激活壓縮選項后對象尺寸。

  數據壓縮是怎樣工作的

  對于行壓縮,SQL Server 2008采用以下三種方法來節省存儲空間:

關鍵字: select 子表樹 企業管理器 DBCC PAGE REVERT

SQL Server 2008中的數據壓縮功能。

  減少了與記錄相關聯的元數據開銷。此元數據為有關列、列長度和偏移量的信息。在某些情況下,元數據開銷可能大于舊的存儲格式。

  它對于數值類型(例如,integer、decimal和float)和基于數值的類型(例如,datetime和money)使用可變長度存儲格式。

  它通過使用不存儲空字符的可變長度格式來存儲定長字符串。

  對于頁面壓縮,SQL Server 2008則是在一張數據頁面上依次采用:

  行壓縮

  前綴壓縮

  字典壓縮

  配置數據壓縮功能需要注意的

  盡管SQL Server 2008的數據壓縮功能非常有價值,但是仍然需要注意一些問題:

  數據壓縮功能僅在企業版和開發版中可用

  數據壓縮可以讓一張數據頁存儲更多的數據行,但是并不能改變單行數據最長8060字節這一限制

  在一張已經設置了數據壓縮的表上創建聚簇索引時,聚簇索引默認繼承原表上的壓縮選項

  在未設置聚簇索引的表上設置頁面壓縮時,只有以下情況才會獲得頁面壓縮的實際效果:

  數據使用BULK INSERT語法添加到表中

  數據使用INSERT INTO ... WITH (TABLOCK)語法添加到表中

  執行帶有頁面壓縮選項的ALTER TABLE ... REBUILD命令

  在未設置聚簇索引的表上更改壓縮選項,會導致該表上所有非聚簇索引都需要重建,因為這些非聚簇索引指向的數據行地址已經都發生了改變。

  在改變壓縮選項時所需要的臨時空間大小與創建索引是所需要的空間是一樣的,因此對于分區表,我們可以逐個分區設置壓縮選項來減少臨時空間的需求壓力。

   由于SQL Server 2008中數據壓縮技術其實是SQL Server 2005 SP2中vardecimal技術的一個超集,因此設置了數據壓縮后就沒有必要保留vardecimal了。當然SQL Server 2008為了保持向后兼容性,在當前版本中仍然保留了vardecimal,但是SQL Server 2008的下一個版本及可能就會棄用vardecimal選項,因此做了這些設置的數據庫應該盡早改變到數據壓縮設置下。

   SQL Server 2008的壓縮選項是工作在存儲引擎層的,對于SQL Server的其他部件來說這一特性是透明的,因此當我們用BULK LOAD的方式將外面的數據導入SQL Server時,會顯著的增加CPU的工作載荷,同時將以壓縮的數據表導出到外部文件時,可能會消耗比原來多很多的空間。

關鍵字:SQL Server、數據、壓縮

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站