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

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

初涉SQL Server性能問題(4/4):列出最耗資源的會話

2024-08-31 00:54:23
字體:
供稿:網(wǎng)友
初涉SQL Server性能問題(4/4):列出最耗資源的會話

在上3篇文章里,我們討論了列出反映服務(wù)器當前狀態(tài)的不同查詢。

  • 初涉SQL Server性能問題(1/4):服務(wù)器概況
  • 初涉SQL Server性能問題(2/4):列出等待資源的會話
  • 初涉SQL Server性能問題(3/4):列出阻塞的會話

這篇文章我們看下從計劃緩存里列出執(zhí)行狀態(tài)。

 1 /***************************************************************************************** 2 List heavy query based on CPU/IO. Change the order by clause apPRopriately 3 ******************************************************************************************/ 4 SELECT TOP 20 5 DB_NAME(qt.dbid) AS DatabaseName 6 ,DATEDIFF(MI,creation_time,GETDATE()) AS [Age of the Plan(Minutes)] 7 ,last_execution_time AS [Last Execution Time] 8 ,qs.execution_count AS [Total Execution Count] 9 ,CAST((qs.total_elapsed_time) / 1000000.0 AS DECIMAL(28,2)) [Total Elapsed Time(s)]10 ,CAST((qs.total_elapsed_time ) / 1000000.0/ qs.execution_count AS DECIMAL(28, 2)) AS [Average Execution time(s)]11 ,CAST((qs.total_worker_time) / 1000000.0 AS DECIMAL(28,2)) AS [Total CPU time (s)]12 ,CAST(qs.total_worker_time * 100.0 / qs.total_elapsed_time AS DECIMAL(28,2)) AS [% CPU]13 ,CAST((qs.total_elapsed_time - qs.total_worker_time)* 100.0 /qs.total_elapsed_time AS DECIMAL(28, 2)) AS [% Waiting]14 ,CAST((qs.total_worker_time) / 1000000.0/ qs.execution_count AS DECIMAL(28, 2)) AS [CPU time average (s)]15 ,CAST((qs.total_physical_reads) / qs.execution_count AS DECIMAL(28, 2)) AS [Avg Physical Read]16 ,CAST((qs.total_logical_reads) / qs.execution_count AS DECIMAL(28, 2))  AS [Avg Logical Reads]17 ,CAST((qs.total_logical_writes) / qs.execution_count AS DECIMAL(28, 2)) AS [Avg Logical Writes]18 ,max_physical_reads19 ,max_logical_reads20 ,max_logical_writes21 , SUBSTRING (qt.TEXT,(qs.statement_start_offset/2) + 1,((CASE WHEN qs.statement_end_offset = -122    THEN LEN(CONVERT(NVARCHAR(MAX), qt.TEXT)) * 223    ELSE qs.statement_end_offset24    END - qs.statement_start_offset)/2) + 1) AS [Individual Query]25 , qt.TEXT AS [Batch Statement]26 , qp.query_plan27 FROM SYS.DM_EXEC_QUERY_STATS qs28 CROSS APPLY SYS.DM_EXEC_SQL_TEXT(qs.sql_handle) AS qt29 CROSS APPLY SYS.DM_EXEC_QUERY_PLAN(qs.plan_handle) qp30 WHERE qs.total_elapsed_time > 031 ORDER BY 32 [Total CPU time (s)] 33 --[Avg Physical Read]34 --[Avg Logical Reads]35 --[Avg Logical Writes]36 --[Total Elapsed Time(s)]37 --[Total Execution Count]38 DESC 

輸出結(jié)果的每列說明介紹如下:

  • DatabaseName執(zhí)行計劃的數(shù)據(jù)庫環(huán)境(數(shù)據(jù)庫名)。
  • Age of the Plan(Minutes)計劃緩存里計劃的生存期,單位為分鐘。
  • Last Execution Time這個計劃的上次執(zhí)行日期和時間。
  • Total Execution Count 自上次編譯后,總執(zhí)行次數(shù);在執(zhí)行計劃生存期內(nèi)[Age of the Plan(Minutes)],總執(zhí)行次數(shù)(自上次編譯后)。
  • Total Elapsed Time(s) 執(zhí)行這個計劃總執(zhí)行次數(shù)后[Total Execution Count]的總占用時間,單位為秒。
  • Average Execution time(s)這個計劃每次執(zhí)行的平均時間,單位為秒。
  • Total CPU time (s) 執(zhí)行這個計劃總執(zhí)行次數(shù)后[Total Execution Count]的總CPU時間,單位為秒。
  • % CPU 與Total Elapsed Time(s)相比,CPU占用時間比。
  • % Waiting 與Total Elapsed Time(s)相比,等待資源占用時間比。
  • CPU time average (s)每次執(zhí)行的平均CPU時間,單位為秒。
  • Avg Physical Read每次執(zhí)行的平均物理讀數(shù)。
  • Avg Logical Reads每次執(zhí)行的平均邏輯讀數(shù)。
  • Avg Logical Writes每次執(zhí)行的平均邏輯寫數(shù)。
  • max_physical_reads每次執(zhí)行的時候,出新最大物理讀數(shù)。
  • max_logical_reads每次執(zhí)行的時候,出新最大邏輯讀數(shù)。
  • max_logical_writes每次執(zhí)行的時候,出新最大邏輯寫數(shù)。
  • Individual Query 批處理語句的部分信息。
  • Batch Statement 批處理查詢。
  • query_plan xml格式的執(zhí)行計劃,點擊后我們可以看圖示執(zhí)行計劃。

一般我們可以分析前5條記錄(通過修改排序規(guī)則)的具體語句信息。大多數(shù)情況,我們會發(fā)現(xiàn)問題出現(xiàn)在臨時表的濫用,distinct語句,游標,不合適的表連接條件,不合適的索引等等。其他經(jīng)常發(fā)生的問題是,存儲過程對數(shù)據(jù)庫的大量調(diào)用(CPU消耗和執(zhí)行時間都很小)。這個需要和開發(fā)人員反饋,修改下具體的實現(xiàn)方式。如果數(shù)據(jù)經(jīng)常被調(diào)用,可以在程序里使用緩存方法避免與服務(wù)器的多次交互。有些對數(shù)據(jù)庫的調(diào)用只是檢查結(jié)果數(shù)據(jù)是否有改變。有些對數(shù)據(jù)庫的調(diào)用是為檢查數(shù)據(jù)庫表里是否有新記錄,且必須馬上處理的。為了完成這些操作,程序會在1秒內(nèi)多次查詢表來找出未處理的記錄。這個可以通過程序的異步調(diào)用來往表里插入數(shù)據(jù)來解決,或可以使用.net框架里的sqlDependency來解決。(sqlDependency提供了這樣一種能力:當被監(jiān)測的數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化時,SqlDependency會自動觸發(fā)OnChange事件來通知應(yīng)用程序,從而達到讓系統(tǒng)自動更新數(shù)據(jù)(或緩存)的目的。)


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁明县| 新密市| 云阳县| 新平| 明光市| 东辽县| 青神县| 和龙市| 普洱| 什邡市| 宁乡县| 广东省| 丹阳市| 台安县| 高淳县| 环江| 石家庄市| 醴陵市| 通道| 邯郸市| 北辰区| 凯里市| 高台县| 五台县| 桦甸市| 日喀则市| 乐陵市| 漳浦县| 平乡县| 中方县| 澎湖县| 延津县| 仙桃市| 新化县| 泸西县| 井研县| 拉萨市| 江门市| 本溪市| 五峰| 辛集市|