Sql-Server
了解 TempDB 增長
需要了解 tempdb 的以下行為:-
由於一些執行不佳的查詢導致 Tempdb 膨脹,我們縮小並嘗試調整每個 tempdb 文件的大小:
發行前:
no of TempDB data files 8 Size of each TempDB data file 100 GB
發行期間:
no of TempDB data files 8 Size of each TempDB data file 200 GB
由於上述原因,我們填充了 1.6TB 的整個磁碟,因此我們將文件縮小並調整為每個 120 GB,從而從 1.6 TB 分配 960 GB 到臨時驅動器並禁用自動增長
幾天后,我們在下面看到
`no of TempDB data files 8
Size of each TempDB data file 50 GB`
我無法理解為什麼 tempdb 自己去每個文件 50 GB 以及即使我們將其初始大小固定為每個文件 120 GB 又如何?
添加一些資訊: - 沒有重新啟動或任何人手動將文件大小進一步減小到 50 GB。自上次收縮更改以來,自動增長也被禁用。
實際上,唯一會導致您的 tempdb 文件縮小的是:
- 有人使用“SHRINKFILE”命令手動調整文件大小
- SQL 服務已重新啟動(由於重新啟動,或手動重新啟動服務等),並且文件恢復為配置的“預設大小”(可以在
sys.master_files
- 請注意,它與報告中的目前/初始大小不同sys.database_files
)您可以審核您的系統(使用預設跟踪或 SSMS 中的文件增長報告)以查看文件收縮事件發生的時間和原因。您可以在system_health XE session中找到重新啟動的歷史記錄。
關於這一點的旁注:
我們將文件縮小並調整為每個 120 GB,從而從 1.6 TB 分配 960 GB 到臨時驅動器並禁用自動增長
除非您為 tempdb 的日誌文件留出空間,否則您應該真正調整 tempdb 文件的大小以填滿這個專用驅動器。由於您關閉了自動增長,因此此時只是浪費空間=)