Sql-Server
如何計劃將數據庫使用的空間降低到盡可能低
根據我們的安全漏洞和指南,當數據庫變得太大而無法滿足在給定 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
- 列舉列未實現為外鍵
建築學
- 預設填充因子
- 索引數
- 低效索引
- 稀疏列
- 堆表
每一項的詳細資訊都在上面連結的文件中。
最好,如果可能的話,我會在數據庫的非生產副本上執行它,但是它不會在引擎蓋下做任何繁重的工作,因此也應該可以在生產環境中執行。