Sql-Server-2012

針對性能瓶頸對 TempDB 進行故障排除

  • May 29, 2019

在嘗試調查 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/

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