原文地址:https://blog.sqlauthority.com/2021/12/15/sql-server-script-to-estimate-compression/
原文作者:Pinal Dave
今天,我們將看到一些簡單的事兒也可以對性能產生巨大影響。最近,我在客戶端綜合數據庫性能運行狀況檢查中實現了數據壓縮。讓我們討論一下如何在SQLServer中估算壓縮。
SQLServer中有兩種不同類型的壓縮廣受歡迎,(1)頁面壓縮 (2)行壓縮。

兩種壓縮
如果一張表的數據讀取量大,但更新次數較少,可以選擇頁面壓縮。如果表更新頻繁,則推薦使用行壓縮。通常,我曾經見到的頁面壓縮比行壓縮效率更高,不過,這也取決于數據是怎樣的以及系統是怎樣設置的。
數據壓縮–該不該使用?
我經常收到的問題答案是應該選擇壓縮。好吧,答案很簡單。如果需要節省空間,可以繼續進行數據和索引壓縮。與寫入磁盤的非壓縮數據相比,壓縮表和索引占用的CPU周期更多。這意味著,如果有CPU壓力,壓縮將進一步降低性能。
估算壓縮
我們可以使用以下腳本輕松估算數據表或索引的壓縮。
1. 頁面壓縮估算
EXEC sp_estimate_data_compression_savings
@schema_name = 'Production',
@object_name = 'WorkOrder',
@index_id = NULL,
@partition_number = NULL,
@data_compression = 'PAGE';
2. 行壓縮估算
EXEC sp_estimate_data_compression_savings
@schema_name = 'Production',
@object_name = 'WorkOrder',
@index_id = NULL,
@partition_number = NULL,
@data_compression = 'ROW';
當你檢查估算值以后,且沒有CPU壓力問題的情況下,則可以通過運行以下腳本輕松啟用壓縮。
啟用壓縮
1. 啟用頁面壓縮
ALTER TABLE Production.WorkOrder REBUILD PARTITION = ALL
WITH (DATA_COMPRESSION = PAGE);
GO
2. 啟用行壓縮
ALTER TABLE Production.WorkOrder REBUILD PARTITION = ALL
WITH (DATA_COMPRESSION = ROW);
GO
3. 禁用數據壓縮
ALTER TABLE Production.WorkOrder REBUILD PARTITION = ALL
WITH (DATA_COMPRESSION = NONE);
GO
請記住你可以為數據表或索引選擇任何一種壓縮。但不能同時用這兩種壓縮。
讓我知道你對這篇博客的看法。如果你們想繼續關注,我也可以在YouTube頻道上創建一個關于此主題的視頻-SQL在六十秒以內
相關可參考作者個人主頁:皮納爾·戴夫
最后修改時間:2022-04-30 15:03:28
「喜歡這篇文章,您的關注和贊賞是給作者最好的鼓勵」
關注作者
【版權聲明】本文為墨天輪用戶原創內容,轉載時必須標注文章的來源(墨天輪),文章鏈接,文章作者等基本信息,否則作者和墨天輪有權追究責任。如果您發現墨天輪中有涉嫌抄襲或者侵權的內容,歡迎發送郵件至:contact@modb.pro進行舉報,并提供相關證據,一經查實,墨天輪將立刻刪除相關內容。




