Sql-Server-2016

使用企業版和 online=on 對 500GB 表進行表壓縮

  • January 26, 2021

我使用的是 MS SQL2016 企業版,我們有幾個表需要壓縮以節省記憶體和備份空間。現在它們每個都在 500GB 左右,我正在嘗試獲得一些空間來進行測試執行,但不幸的是我們無法嘗試這個。我的問題是第一個 - 我正在考慮使用 Online=On 選項來允許在壓縮發生時仍然使用該表,但這將如何影響備份?我們每天有 2 次差異和一次備份,表格如此之大,我想使用線上方法需要幾天而不是幾小時。在這種情況下,其他人做了什麼,硬著頭皮在周末讓桌子離線 1.5 天?

同意 sepupic 所說的一切,特別是強調如果您無論如何都使用標準壓縮備份,您將不會節省備份空間。

我還想特別補充一點,您也不能保證節省記憶體。壓縮是一種節省磁碟空間的方法。當數據從壓縮表中載入到記憶體中時,可能會先使用****CPU對數據進行解壓,然後再載入到記憶體中。在寫入壓縮表時反之亦然(CPU對****Memory中的解壓縮數據執行壓縮算法並將其硬化為Disk上的壓縮數據)。(但情況並非總是如此,在某些情況下,它也會在記憶體中保持壓縮狀態。)

基本上,數據壓縮非常適合減少特定表消耗的磁碟空間,它有助於減少****磁碟本身的 I/O 瓶頸(這通常是硬體餡餅中最慢的部分)。這就是它的主要用途。

您可以在這篇很棒的文章壓縮及其對性能的影響中了解更多相關資訊。

首先,您應該估計壓縮節省: sp_estimate_data_compression_savings (Transact-SQL)

事實證明,您的表格沒有任何增益,compression因為它的最大部分是varbinary(max)圖片,例如(這只是範例,我希望您的表格可以從壓縮中獲得)

使用或不使用online選項取決於使用表的密集程度。

您應該在數據庫中準備至少與估計的新大小一樣多的可用空間,因為將創建表的新副本。在開始重建之前增長數據文件很重要。

你也應該做好準備log space。需要多少日誌空間取決於您的數據庫recovery model和線上/離線選項。線上重建將採用fully logged任何恢復模式,離線重建可以採用minimally logged簡單和批量記錄模式。如果您選擇完全記錄操作,則事務日誌中需要兩倍的新表大小,因為還需要為可能的回滾保留空間。

至於備份大小:如果您compressed現在使用備份,則在壓縮某些表後,備份大小仍然幾乎保持不變。

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