Sql-Server

如何計劃將數據庫使用的空間降低到盡可能低

  • November 1, 2020

根據我們的安全漏洞和指南,當數據庫變得太大而無法滿足在給定 RTO 下無法恢復的要求時,我們需要計劃實現相同的目標:-

根據您的經驗,我需要一些指導和幫助:-

關於相關數據庫的一些見解 -

總空間->右鍵點擊數據庫-屬性->大小= 10TB

上面似乎免費的東西->右鍵點擊數據庫屬性->可用空間= 5 TB

This database is an OLTP and critical one as it goes through lot of DUI operations throughout with heavy usage of TempDB

我列出了使用空間和索引的 TOP 10 表:-

拉出的所有前 5 名都是

  • partitioned單表中有超過 700 個分區的十億和百萬行的表
  • 上表已PAGE啟用壓縮
  • 上述表中的大多數索引少於 3 個,但索引級別的壓縮顯示NONE

對於備份,我們確實使用了 idera 等第三方工具的壓縮來減小大小,但它超過了門檻值。完整備份的備份大小約為 1.9 TB。我們也有 diff 和 tran 日誌備份。

我對走這條縮小路線有點猶豫,因為它可能會影響性能,但請幫助我提出任何想法,但可以採取其他措施來縮小空間嗎?

我們可以將幾個大表拆分到自己單獨的數據庫中嗎?如果是,有什麼收穫?

非常感謝您的幫助

我將在有關數據類型的點上回應 SqlWorldWide。他們連結的文章有一些很好的例子,但也有更多不那麼明顯的領域需要檢查。

我編寫了一個腳本sp_sizeoptimiser來幫助自動辨識其中的很多。即使您不使用它,它所涵蓋的領域也值得研究:

數據類型

  • 基於時間的數據類型
  • 未指定的 VARCHAR 長度
  • 瘋狂的 VARCHAR 最大值
  • NVARCHAR 數據類型
  • FLOAT 和 REAL 數據類型
  • BIGINT 作為身份
  • 帶有 0 刻度的 NUMERIC 或 DECIMAL
  • 列舉列未實現為外鍵

建築學

  • 預設填充因子
  • 索引數
  • 低效索引
  • 稀疏列
  • 堆表

每一項的詳細資訊都在上面連結的文件中。

最好,如果可能的話,我會在數據庫的非生產副本上執行它,但是它不會在引擎蓋下做任何繁重的工作,因此也應該可以在生產環境中執行。

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