誤區 #9: 數據庫文件收縮不會影響性能
錯誤!
收縮數據庫文件唯一不影響性能的情況是文件末尾有剩余空間的情況下,收縮文件指定了TruncateOnly選項。
收縮文件的過程非常影響性能,這個過程需要移動大量數據從而造成大量IO,這個過程會被記錄到日志從而造成日志暴漲,相應的,還會占去大量的CPU資源。
不僅在收縮的過程中影響性能,並且在文件收縮之後同樣影響應能,收縮產生的大量日志會被事務日志傳送,鏡像,復制能操作重復執行。而空間不夠時,文件還需要填0初始化從而影響性能(除非你開啟的不用填零初始化的選項)。
這還不算最糟,最糟的結果是文件收縮造成了大量的索引碎片,對於scan操作來說這個碎片影響性能。
不幸的是,收縮數據庫的代碼不是我寫的(如果要是我寫的話,我一開始就不會允許這種機制的)所以我們唯一能做的就是接受這種操作。
如果你想找到替代數據庫文件收縮的方式,請看這篇博文:Why you should not shrink your data files,或者是一開始你就對文件做好規劃:Importance of data file size management。還有這篇:TGIF Time Warp.
孩子,記住這一點:
簡單的對收縮說NO就可以讓我們永遠遠離其造成的煩惱。