Sql-Server

了解 TempDB 增長

  • March 5, 2019

需要了解 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 文件縮小的是:

  1. 有人使用“SHRINKFILE”命令手動調整文件大小
  2. SQL 服務已重新啟動(由於重新啟動,或手動重新啟動服務等),並且文件恢復為配置的“預設大小”(可以在sys.master_files- 請注意,它與報告中的目前/初始大小不同sys.database_files

您可以審核您的系統(使用預設跟踪或 SSMS 中的文件增長報告)以查看文件收縮事件發生的時間和原因。您可以在system_health XE session中找到重新啟動的歷史記錄。

關於這一點的旁注:

我們將文件縮小並調整為每個 120 GB,從而從 1.6 TB 分配 960 GB 到臨時驅動器並禁用自動增長

除非您為 tempdb 的日誌文件留出空間,否則您應該真正調整 tempdb 文件的大小以填滿這個專用驅動器。由於您關閉了自動增長,因此此時只是浪費空間=)

引用自:https://dba.stackexchange.com/questions/231259