Sql-Server
關於sql server中超大表的壓縮問題
我對這種壓縮功能在 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 成本可能會被淹沒。
人們傾向於放棄行壓縮作為一種選擇。在某些情況下,它可以提供相當不錯的壓縮比,並且幾乎沒有成本。