Sql-Server-2012
針對性能瓶頸對 TempDB 進行故障排除
在嘗試調查 SQL Server 數據庫的一些性能問題時,我注意到 ASYNC_IO_COMPLETION 和 PAGEIOLATCH_* 的等待統計資訊似乎很高。在資源監視器中,我注意到 tempDB 經常(每小時至少 1 次)讀取/寫入大量數據,總計(B/秒)範圍為 5GB - 25GB。
tempDB 位於與數據庫和日誌文件不同的虛擬磁碟上。TempDB 大小為 4 GB。我們的主數據庫和日誌文件各為 40GB。我已經嘗試為此研究性能計數器,但找不到任何我能理解的東西來弄清楚為什麼我會得到某些數字。
通過資源監視器,tempDB 的總數據如此之高是不是很不尋常?我們的主數據庫每天僅增長約 50MB。我應該尋找什麼來找出導致 tempDB 上如此高數據的原因以及這是否導致 I/O 瓶頸?如果最好的方法是使用特定的 perfmon 計數器,我應該查看哪些計數器以及哪些值是好的或壞的?
Tempdb 用於保存:
顯式創建的臨時使用者對象,例如:全域或本地臨時表和索引、臨時儲存過程、表變數、表值函式中返回的表或游標。要擷取導致 tempdb 分配的會話,請嘗試使用 sp_blitz或參考這篇文章更深入地了解 tempdb。https://www.mssqltips.com/sqlservertip/4356/track-sql-server-tempdb-space-usage/