Sql-Server
縮小鏡像和複製的數據庫
我從生產數據庫中刪除了一張大表
磁碟上的目前 DB 大小 = 264 GB
表的實際大小 = 32.164 GB
我要縮小這個數據庫。雖然不推薦,但這是我必須回收這個空間的唯一選擇,我會為這個表做每月存檔,所以我確信它不會再增長到這個大小
我的問題是
這個數據庫有鏡像和複製,我該怎麼辦?
有沒有辦法在不停機的情況下做到這一點?如果不是,應該有什麼計劃以最少的停機時間來做到這一點
收縮只是影響索引還是對性能有其他影響?
收縮會對事務日誌產生巨大影響,進而會極大地影響鏡像的性能,我認為在較小程度上影響複製。
我的建議是:不要嘗試揮動魔杖並立即恢復 200+GB ,而是逐步分塊進行。每晚或每 6 小時或在其他合理的時間間隔內,執行以下命令之一:
-- day 1 DBCC SHRINKFILE(data_file_name, 245000); -- day 2 DBCC SHRINKFILE(data_file_name, 232500); -- day 3 DBCC SHRINKFILE(data_file_name, 225000);
是的,這不太令人滿意,而且顯然需要更長的時間,但誰在乎呢?你現在有多需要那個空間?恕我直言,如果沒有大規模的破壞,您的功能和使用者將會變得更好。
另一種方法是關閉鏡像和/或複制,並在收縮操作完成後完全重新初始化它們(並且您已經備份了日誌並將其設置為正常大小)。但我認為一次縮小一點遠沒有那麼複雜、破壞性和風險那麼大。