不少時候有這樣的場景,開發抱怨DBA沒有調優好數據庫,DBA抱怨開發寫的程序代碼差,所以,DBA和開發都成爲了死對頭,沒法真正排查問題。sql
DBA只能使用Windows性能監視器,SQL Server內置的活動監視器、SQL Trace、SQL Profiler、Performance Dashboard等工具,或者使用執行計劃來查看查詢成本。數據庫
爲了讓DBA有更多有效工具排查問題,SQL Server2016推出了不少新功能,其中一項功能是 Live Query Statistics(LQS 實時查詢統計信息),這個功能顯示了以往不容易看到的執行時期的內容,例如查詢期間的統計信息,這個功能能夠幫助DBA找出長時間查詢的真正問題根源(root cause)工具
使用實時統計查詢性能
使用實時查詢統計很是簡單,只須要在SSMS的工具列,分別按一下【包括實際的執行計劃】【包括實時查詢統計信息】圖標,並執行您的查詢就能夠了。優化
如今能夠在【實時查詢統計信息】tab頁看到查詢所用到的運算符,正在統計查詢耗費時間,另外在tab頁面的左上角能夠看到整個查詢的完成度spa
使用【實時查詢統計信息】會對性能有必定影響,當查詢比較複雜的時候,所需等待時間也會增長,而且整個過程也會耗用很多CPU資源,所以使用的時機必需要審慎,不然問題未查出來,反而形成數據庫更大的壓力。code
提示
若是隻使用了【包括實時查詢統計信息】,而未打開【包括實際執行計劃】,那麼在【包括實時查詢統計信息】的tab頁所看到的通過時間和完成率都會是0orm
不會顯示消耗時間blog
在執行計劃中向下鑽取(drill down)索引
在實時查詢統計信息執行過程當中,能夠點擊任何一個執行計劃中的運算符,查看運算符的統計信息,例如:消耗時間(Elapsed time)、運算符的處理進度(operator progress)、目前CPU使用率,根據這些信息幫助DBA找出瓶頸所在
另外,當查詢依然在執行時能夠切換到活動監視器,在新增長的【活動的耗費大量資源的查詢】tab頁裏能看到當前正在活動的耗時查詢,直到該查詢執行完畢
實時查詢統計信息原理
實時查詢統計信息背後的原理實際上是經過DMV動態管理視圖獲取信息,而後呈如今tab頁面上,從而讓DBA能夠不須要自行查詢這些DMV,直接以圖形化界面來快速找到長時間執行的查詢是在哪一個環節耗費最多時間和成本。
下面是實時查詢統計信息所使用的DMV,固然本身也能夠經過下面的DMV來查詢得到須要的統計信息
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
限制
目前實時查詢統計信息尚不支持下列功能
列存儲索引(columnstore indexes)
內存優化表(memory optimized tables)
本地編譯存儲過程(Natively compiled stored procedures)
功能截圖
更多SQL Server2016好用功能敬請期待o(∩_∩)o