tempdb在釋放東西時不放棄磁碟空間是否正常?
所以我的 tempdb 變得越來越大。像 200+ GB。
USE tempdb GO EXEC sp_spaceused database_name database_size unallocated space tempdb 211668.88 MB 206803.45 MB
它使用簡單的恢復模型,根據微軟的說法:
將 tempdb 的恢復模式設置為 SIMPLE。此模型自動回收日誌空間以保持較小的空間需求。
但是“回收日誌空間”是否意味著它仍然保持磁碟分配?
有點像如果我的生意有大量顧客湧入,所以我在街對面借了很多錢來放置額外的汽車,但是一旦我不再需要所有的空間,我仍然保留那個額外的停車場供以後使用(沒有允許其他人使用它)儘管它仍然是空的?
如果這是正常行為,那麼我可能會期望它認為它可能有一天會再次使用它的大量空間,因此如果它有“無限”空間來擴展它最終會根據確定的使用模式停止增長?
或者,它是否應該在作業系統發佈時將磁碟空間歸還給作業系統?
更新
還發現了這個:http ://technet.microsoft.com/en-us/library/ms176037(v=sql.105).aspx
預設情況下,tempdb 數據庫會在需要空間時自動增長,因為文件的 MAXSIZE 設置為 UNLIMITED。因此,tempdb 可以繼續增長,直到包含 tempdb 的磁碟空間耗盡。您可以通過為 tempdb 設置 MAXSIZE 來防止 tempdb 無限制地增長,但不建議這樣做。限制 tempdb 的大小可能會導致數據庫磁碟空間不足。這可能會導致您的生產環境出現嚴重中斷,並且可能會阻止正在執行的應用程序完成操作。
所以也許我已經在這裡回答了我自己的問題,但希望有人能澄清一下:然後我應該把它放在驅動器/分區上嗎?然後它可以“盡可能大”地增長,同時不佔用我想用於其他事情的磁碟空間?但在那種情況下,我想知道 MAXSIZE 和實際上沒有更多空間來物理增長之間有什麼區別。
是的,SQL Server 文件不會自動收縮。它們保持相同大小,除非您通過 SQL Server Management Studio 或使用 DBCC SHRINKFILE 命令顯式縮小它們。雖然您可以將文件設置為自動收縮,但廣泛建議不要這樣做,因為收縮/增長文件非常耗費資源,尤其是在您處理沒有即時文件初始化的日誌文件時。
編輯:響應您的編輯:MAXSIZE 和文件在磁碟用完之前可以獲得的大小之間存在差異。您可以在數據庫屬性的文件部分或使用 ALTER DATABASE 命令進行設置。