優化SqlServer--數據壓縮


 數據壓縮是對存儲和性能優勢的加強。減少數據庫占用的磁盤空間量將減少整體數據文件存儲空間,在一下幾個方面增加吞吐量:

     1.更好的I/O利用率,每個頁面可以讀寫更多的數據。

     2.更好的內存利用率,緩沖區可以緩存更多的數據。

     3.減少頁面的閉鎖,每個頁面可以包含更多數據。

     由於數據壓縮必須考慮I/O 和CPU之間的平衡,壓縮和解壓縮都需要CPU處理。因此數據壓縮對於舊數據和不經常查詢的數據更有意義。

    這里我們主討論兩種壓縮:一是行壓縮;二是頁面壓縮。

    行壓縮:壓縮可以改變格式的存儲固定值數據類型--也就說包含一個字節的值的4字節列可以壓縮為1字節,1字節的列不能再壓縮,但是null和0值不占字節。

    語法: 創建 create table 表名()with (DATA_COMPERSSION=ROW)

              添加 ALTER TABLE 表名 REBUILD with (DATA_COMPERSSION=ROW)

    頁面壓縮:頁面壓縮在實現行壓縮的前提下,還實現了兩種壓縮,一是前綴壓縮(對於每個頁面和列來說前綴值都是相同的,可用來減少存儲的需求,通過引用來取代重復的前綴);二是字典壓縮(搜索頁面中的重復值,這被對CI的引用取代)。

      語法: 創建 create table 表名()with (DATA_COMPERSSION=PAGE)

              添加 ALTER TABLE 表名 REBUILD with (DATA_COMPERSSION=PAGE)

   估計節省空間:語法 sp_estimate_data_compression_savings

                             [@schema_name=]--架構名稱

                            ,   [@object_name=]--有索引的表或者索引視圖的名稱。

                            ,   [@index_name=]--索引ID號

                              ,   [@partition_number=]--對象分區號,null表示非分區

                              ,   [@data_compression=] --壓縮類型(none\row\page)

                             [;]

         監控數據壓縮:windows性能監視的sqlserver:access method 對象中有兩個計數器:

         Page compression attempts/sec:計算每秒進行頁面壓縮嘗試的次數;

         Pages compressed/sec:計算每秒壓縮的頁面數。

      最后還要注意數據壓縮的注意事項:

        1.啟用和禁用表或群集索引壓縮會重構所有費群集索引。

        2.不能在稀疏列中使用壓縮。

        3.超出行的LOB 不能壓縮。

        4.索引中的非葉子也只能使用行壓縮進行壓縮。

        5.非群集索引不繼承標的壓縮設置。

        6.再刪除群集索引時,表將保持這些壓縮設置。

        7.除非特別指定,創建群集索引將繼承表的壓縮設置。

      總結: 我們已經了解了基本的使用方式和一些注意事項,通過壓縮實現高性能的數據庫系統。同時我們還要兼顧一些硬件成本,最后我們還要注意的是對於高可用性系統,改變壓縮設置可能會產生額外的事務日志操作。

 

 

       

  

     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM