国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

如何找出你性能最差的SQL Server查詢

2024-08-31 00:54:03
字體:
來源:轉載
供稿:網友
如何找出你性能最差的SQL Server查詢

我經常會被反復問到這樣的問題:”我有一個性能很差的SQL Server。我如何找出最差性能的查詢?“。因此在今天的文章里會給你一些讓你很容易找到問題答案的信息向導。

問SQL Server!

SQL Server的一個優點是它本身能回答幾乎所有你的問題,因為SQL Server在各個DMV和DMF里存儲了很多故障排除信息。另一方面這也是個缺點,因為你必須知道各個DMV/DMF,還有如何把它們解釋和關聯在一起。

至于你的最差性能SQL Server查詢的一個最重要的DMV是sys.dm_exec_query_stats。對于每個緩存的執行計劃,SQL Server存儲了這個執行計劃在運行時的詳細信息。另外SQL Server告訴你這個查詢消耗的CPU時間和I/O讀取。當我對性能很差的SQL Server進行故障排除時,這是我經常使用的基本DMV之一。

讓我們進入sys.dm_exec_query_stats!

當你對sys.dm_exec_query_stats進行一個簡單的SELECT查詢,你會得到有很多不同列的一個非常廣泛的記錄集——有大量的不同數字。

我們來仔細看下它們。對于每個緩存的執行計劃,SQL Server給你下列度量的信息:

  • Worker Time (columns …_工作者時間)
  • Physical Reads (columns …_物理讀)
  • Logical Writes (columns …_邏輯寫)
  • Logical Reads (columns …_邏輯讀)
  • SQLCLR Time (columns …_公共語言運行時間)
  • Elapsed Time (columns …_運行時間)
  • Row Count (columns …_行數)

對于每個度量,你得到4個集合信息的不同列:

  • 總值(Total value)
  • 上個值(Last value)
  • 最小值(Min value)
  • 最大值(Max value)

手上有了這些信息找出你性能最差的查詢是什么。但首先你要知道什么是你的性能瓶頸——CPU還是I/O限制?如果你的性能瓶頸是CPU限制,你可以用下列查詢問SQL Server根據CPU消耗列出前5個最差性能的查詢:

-- Worst performing CPU bound queriesSELECT TOP 5    st.text,    qp.query_plan,    qs.*FROM sys.dm_exec_query_stats qsCROSS APPLY sys.dm_exec_sql_text(qs.plan_handle) stCROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qpORDER BY total_worker_time DESCGO

你可以看到這里我使用了簡單的ORDER BY total_worker_time DESC來返回CPU密集的查詢。另外也通過調用sys.dm_exec_sql_textsys.dm_exec_query_plan DMF來抓取SQL語句和執行計劃本身。下列代碼顯示如何依據I/O消耗來找出你性能最差的查詢。

 1 -- Worst performing I/O bound queries 2 SELECT TOP 5 3     st.text, 4     qp.query_plan, 5     qs.* 6 FROM sys.dm_exec_query_stats qs 7 CROSS APPLY sys.dm_exec_sql_text(qs.plan_handle) st 8 CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp 9 ORDER BY total_logical_reads DESC10 GO

當在你面前有SQL語句和執行計劃時,你可以進一步分析查詢找出是什么引起高CPU或I/O消耗。

小結

SQL Server是個驚艷的產品:它可以立即給你問題的很好答案。你只要知道在哪里找你的答案。至于性能很差的查詢,你總應該通過分析DMVsys.dm_exec_query_stats開始,在這里SQL Server保存里你執行計劃運行時統計信息。

感謝關注!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿坝县| 日照市| 新河县| 曲阜市| 疏勒县| 宁德市| 漳平市| 濮阳市| 河南省| 隆德县| 上虞市| 巴东县| 任丘市| 张北县| 渝北区| 林甸县| 璧山县| 瑞金市| 济南市| 清涧县| 龙陵县| 津市市| 滦平县| 宣汉县| 阿勒泰市| 玉林市| 夏津县| 米脂县| 孟村| 泉州市| 醴陵市| 华容县| 黄山市| 淮安市| 确山县| 文水县| 项城市| 长宁县| 时尚| 鱼台县| 白朗县|