本文出處:http://www.cnblogs.com/wy123/p/6835939.html
什么是等待
簡單說明一下什么是等待:
當(dāng)應(yīng)用程序?qū)QL Server發(fā)起一個Session請求的時候,這個Session請求在數(shù)據(jù)庫中執(zhí)行的過程中會申請其所需要的資源,
比如可能會申請內(nèi)存資源,表上的鎖資源,物理IO資源,網(wǎng)絡(luò)資源等等,
如果當(dāng)前Session運行過程中需要申請的某些資源無法立即得到滿足,就會產(chǎn)生等待。
SQL Server會以不用的方式來展現(xiàn)這個等待信息,比活動Session的等待信息,實例級的等待信息等等。
SQL Server中,等待事件是作為DBA進(jìn)行TroubleShooting的重要參考信息之一,SQL Server中可以通過多中方式來獲取等待信息。
但是對于SQL Server 2016之前的版本來說,不管是活動Session級別的等待和實例級的等待,參考意義都有限,
更多的時候是想要更加詳細(xì)的且可以事后分析的等待,這就需要收集那些曾經(jīng)已執(zhí)行過的Session產(chǎn)生的等待信息,也就是特定Session等待信息的歷史記錄
本文重點介紹使用擴(kuò)展事件來捕獲等待信息,但不介紹擴(kuò)展事件本身的使用,重點放在如何使用擴(kuò)展事件來獲取想要的等待事件信息。
需要對擴(kuò)展事件有一定的了解。
等待信息的獲取途徑
在SQL Server中有一個系統(tǒng)視圖sys.dm_os_wait_stats記錄了自數(shù)據(jù)庫服務(wù)啟動以來累積產(chǎn)生的等待信息,
如下圖,這個結(jié)果是實例級的,也就是記錄的整個數(shù)據(jù)庫服務(wù)器所有的等待事件的累積。
多數(shù)時候參考意義不是很大,比如某一天的網(wǎng)絡(luò)延時很高,sys.dm_os_wait_stat