SQL Server2016 新功能實(shí)時(shí)查詢統(tǒng)計(jì)信息
很多時(shí)候有這樣的場(chǎng)景,開(kāi)發(fā)抱怨DBA沒(méi)有調(diào)優(yōu)好數(shù)據(jù)庫(kù),DBA抱怨開(kāi)發(fā)寫(xiě)的程序代碼差,因此,DBA和開(kāi)發(fā)都成為了死對(duì)頭,無(wú)法真正排查問(wèn)題。
DBA只能使用Windows性能監(jiān)視器,SQL Server內(nèi)置的活動(dòng)監(jiān)視器、SQL Trace、SQL Profiler、Performance Dashboard等工具,或者使用執(zhí)行計(jì)劃來(lái)查看查詢成本。
為了讓DBA有更多有效工具排查問(wèn)題,SQL Server2016推出了很多新功能,其中一項(xiàng)功能是 Live Query Statistics(LQS 實(shí)時(shí)查詢統(tǒng)計(jì)信息),這個(gè)功能顯示了以往不容易看到的執(zhí)行時(shí)期的內(nèi)容,例如查詢期間的統(tǒng)計(jì)信息,這個(gè)功能可以幫助DBA找出長(zhǎng)時(shí)間查詢的真正問(wèn)題根源(root cause)
使用實(shí)時(shí)統(tǒng)計(jì)查詢
使用實(shí)時(shí)查詢統(tǒng)計(jì)非常簡(jiǎn)單,只需要在SSMS的工具列,分別按一下【包括實(shí)際的執(zhí)行計(jì)劃】【包括實(shí)時(shí)查詢統(tǒng)計(jì)信息】圖標(biāo),并執(zhí)行您的查詢就可以了。
現(xiàn)在可以在【實(shí)時(shí)查詢統(tǒng)計(jì)信息】tab頁(yè)看到查詢所用到的運(yùn)算符,正在統(tǒng)計(jì)查詢耗費(fèi)時(shí)間,另外在tab頁(yè)面的左上角可以看到整個(gè)查詢的完成度

使用【實(shí)時(shí)查詢統(tǒng)計(jì)信息】會(huì)對(duì)性能有一定影響,當(dāng)查詢比較復(fù)雜的時(shí)候,所需等待時(shí)間也會(huì)增加,并且整個(gè)過(guò)程也會(huì)耗用不少CPU資源,因此使用的時(shí)機(jī)必須要審慎,否則問(wèn)題未查出來(lái),反而造成數(shù)據(jù)庫(kù)更大的壓力。
提示
如果只使用了【包括實(shí)時(shí)查詢統(tǒng)計(jì)信息】,而未打開(kāi)【包括實(shí)際執(zhí)行計(jì)劃】,那么在【包括實(shí)時(shí)查詢統(tǒng)計(jì)信息】的tab頁(yè)所看到的經(jīng)過(guò)時(shí)間和完成率都會(huì)是0
不會(huì)顯示消耗時(shí)間

在執(zhí)行計(jì)劃中向下鉆取(drill down)
在實(shí)時(shí)查詢統(tǒng)計(jì)信息執(zhí)行過(guò)程中,可以點(diǎn)擊任何一個(gè)執(zhí)行計(jì)劃中的運(yùn)算符,查看運(yùn)算符的統(tǒng)計(jì)信息,例如:消耗時(shí)間(Elapsed time)、運(yùn)算符的處理進(jìn)度(operator progress)、目前CPU使用率,根據(jù)這些信息幫助DBA找出瓶頸所在
另外,當(dāng)查詢依然在執(zhí)行時(shí)可以切換到活動(dòng)監(jiān)視器,在新增加的【活動(dòng)的耗費(fèi)大量資源的查詢】tab頁(yè)里能看到當(dāng)前正在活動(dòng)的耗時(shí)查詢,直到該查詢執(zhí)行完畢
實(shí)時(shí)查詢統(tǒng)計(jì)信息原理
實(shí)時(shí)查詢統(tǒng)計(jì)信息背后的原理其實(shí)是通過(guò)DMV動(dòng)態(tài)管理視圖獲取信息,然后呈現(xiàn)在tab頁(yè)面上,從而讓DBA可以不需要自行查詢這些DMV,直接以圖形化界面來(lái)快速找到長(zhǎng)時(shí)間執(zhí)行的查詢是在哪個(gè)環(huán)節(jié)耗費(fèi)最多時(shí)間和成本。
實(shí)時(shí)查詢統(tǒng)計(jì)信息原理
實(shí)時(shí)查詢統(tǒng)計(jì)信息背后的原理其實(shí)是通過(guò)DMV動(dòng)態(tài)管理視圖獲取信息,然后呈現(xiàn)在tab頁(yè)面上,從而讓DBA可以不需要自行查詢這些DMV,直接以圖形化界面來(lái)快速找到長(zhǎng)時(shí)間執(zhí)行的查詢是在哪個(gè)環(huán)節(jié)耗費(fèi)最多時(shí)間和成本。
下面是實(shí)時(shí)查詢統(tǒng)計(jì)信息所使用的DMV,當(dāng)然自己也可以通過(guò)下面的DMV來(lái)查詢獲得需要的統(tǒng)計(jì)信息
- SELECT * FROM sys.dm_exec_requests
- SELECT * FROM sys.dm_exec_sql_text
- SELECT * FROM sys.dm_exec_query_memory_grants
- SELECT * FROM sys.dm_exec_query_plan
- SELECT * FROM sys.dm_exec_query_profiles
限制
目前實(shí)時(shí)查詢統(tǒng)計(jì)信息尚不支持下列功能
列存儲(chǔ)索引(columnstore indexes)
內(nèi)存優(yōu)化表(memory optimized tables)
本地編譯存儲(chǔ)過(guò)程(Natively compiled stored procedures)