Sql-Server

關於sql server中超大表的壓縮問題

  • November 25, 2020

我對這種壓縮功能在 SQL Server 中的工作方式感到困惑:

對於相當多的大表,超過 TB 的表,我們最近實施了 PAGE 級壓縮。

它是如何完成的範例:-

Use [DBname]

ALTER TABLE dbo.sampletable REBUILD PARTITION =1  WITH (DATA_COMPRESSION = PAGE);

ALTER TABLE dbo.sampletable REBUILD PARTITION =2  WITH (DATA_COMPRESSION = PAGE);

等等…

有問題的表都是分區表。

當檢查我在表級別(聚集索引)看到的壓縮細節時,它顯示壓縮 =PAGE但對於現有的非聚集索引,壓縮表示 =NONE

我使用的查詢來自這里這裡

如果在表級別啟用壓縮或還需要在索引級別啟用壓縮,我不確定我應該從上面解釋什麼?

如果我們還應該考慮壓縮 NC 索引,是否有空間和性能優勢?基本上,我在這裡壓縮它們的理想情況是什麼?

謝謝

我們無法回答您是否要壓縮索引。只有您有權訪問您的數據、伺服器和查詢。考慮因素包括:

頁面壓縮的破解(“解壓縮”)非常昂貴。頁面以壓縮形式存在於記憶體中,這意味著每次訪問頁面(包括在記憶體中)時,都必須對其進行破解。您可能可以想像索引中的頁面可以非常頻繁地導航(破解)。

繼續上面的推理。如果數據傾向於存在於記憶體中(即使是未壓縮的形式),那麼您會注意到更多的 CPU 成本。但是如果數據傾向於儲存在磁碟上,那麼與潛在的 I/O 節省相比,CPU 成本可能會被淹沒。

人們傾向於放棄行壓縮作為一種選擇。在某些情況下,它可以提供相當不錯的壓縮比,並且幾乎沒有成本。

引用自:https://dba.stackexchange.com/questions/280263