Sql-Server

管理包含超過 1 TB 數據的 SQL Server 數據庫

  • October 8, 2019

最近我們有一個超過 1 TB 的審計數據庫,由於我們存在儲存問題,管理層正在尋找選擇。

我的建議是在每年年底我們進行備份並截斷所有表,以保持數據庫的可管理性。

擁有存檔數據庫將沒有好處,因為它將再次佔用相同的空間。

我想就我可以向管理層提出的選項提出專家意見,即每年分配更多空間或截斷整個數據庫。

  1. 獲得更多空間。如果您有保留這麼多數據的業務需求,他們必須拿出錢來。
  2. 為最大的表(和索引)打開頁面壓縮(測試測試測試!),日誌數據壓縮得非常好,但壓縮這麼多數據需要一些時間。
  3. 見第 1 點

我在上面添加了Trubs 的 答案,你應該贊成,因為他在正確的軌道上,但我在這裡也添加了更多選項:

  1. 添加更多空間(如上所述)
  2. 如果您在任何索引上每頁的平均可用空間量很大,則應該執行¹ 語句(如果您有足夠的可用空間,我建議您進行操作,但是由於我們正在談論空間不足,因此操作可能無法在較大的表上完成)。要找到每頁的平均可用空間量,您需要使用or模式執行 dmv,這需要一段時間。ALTER INDEXREORGREBUILDsys.dm_db_index_physical_statsSAMPLED``DETAILED
  3. 清除一些數據。您可以批量刪除以幫助減少過多的日誌記錄和鎖定,或者更好的長期解決方案是利用表和索引分區²並切換/截斷最後一個分區以更快地清除數據。
  4. 啟用頁面或行壓縮²(如上所述)。sp_estimate_data_compression_savings您可以使用儲存過程查看估計的空間節省。
  5. 升級到 SQL 2016 或更高版本後,您可以將表轉換為使用聚集列儲存索引²。這些可能會為您提供可用的最佳壓縮比,並且可能還會改善對這些表的查詢執行時間。值得注意的是,我不建議您使用 SQL 2014(或 SQL 2012)執行此操作,因為我認為此功能在 SQL 2016 之前處於 Beta 版,最終以適當的功能發布。
  6. 利用 Azure Stretch Database,這是一種混合解決方案,可讓您儲存在雲中不經常訪問的數據。這將花費金錢並且至少需要使用 SQL 2016,但由於我們正在討論未來版本中的功能,我認為它也應該被列出。

¹ - 僅在企業版中可用

² - 從 SQL Server 2016 SP1 開始的所有 SQL Server 版本中都可用。這是此 Service Pack 之前的企業專用功能。

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