मैं प्रति काल प्रति संग्रहीत प्रक्रिया के लिए कॉल गणना की निगरानी कैसे कर सकता हूं?


10

कुछ प्रदर्शन समस्याओं का निदान करने के लिए, मैं सिस्टम प्रदर्शन की तुलना में कुछ प्रक्रियाओं की संख्या की बेहतर समझ प्राप्त करना चाहूंगा। क्या एक निश्चित समय के दौरान प्रत्येक प्रक्रिया को कई बार बुलाया गया है?

जवाबों:


17

आप इसे (और अधिक) डायनामिक मैनेजमेंट व्यूज़ (DMV) से प्राप्त कर सकते हैं । किसी विशेष संग्रहीत कार्यविधि के लिए आँकड़े प्राप्त करने के लिए, निम्नलिखित क्वेरी का प्रयास करें।

SELECT
    OBJECT_NAME(qt.objectid)
  , qs.execution_count AS [Execution Count]
  , qs.execution_count / DATEDIFF(Second, qs.creation_time, GETDATE()) AS [Calls/Second]
  , qs.total_worker_time / qs.execution_count AS [AvgWorkerTime]
  , qs.total_worker_time AS [TotalWorkerTime]
  , qs.total_elapsed_time / qs.execution_count AS [AvgElapsedTime]
  , qs.max_logical_reads
  , qs.max_logical_writes
  , qs.total_physical_reads
  , DATEDIFF(Minute, qs.creation_time, GETDATE()) AS [Age in Cache]
FROM
    sys.dm_exec_query_stats AS qs
CROSS APPLY 
    sys.dm_exec_sql_text(qs.[sql_handle]) AS qt
WHERE
    qt.[dbid] = DB_ID()
AND qt.objectid = OBJECT_ID('StoredProcedureName')
OPTION (RECOMPILE);

सबसे अक्सर निष्पादित प्रक्रियाओं को देखने के लिए:

SELECT
    OBJECT_NAME(qt.objectid)
  , qs.execution_count AS [Execution Count]
  , qs.execution_count / DATEDIFF(Second, qs.creation_time, GETDATE()) AS [Calls/Second]
  , qs.total_worker_time / qs.execution_count AS [AvgWorkerTime]
  , qs.total_worker_time AS [TotalWorkerTime]
  , qs.total_elapsed_time / qs.execution_count AS [AvgElapsedTime]
  , qs.max_logical_reads
  , qs.max_logical_writes
  , qs.total_physical_reads
  , DATEDIFF(Minute, qs.creation_time, GETDATE()) AS [Age in Cache]
FROM
    sys.dm_exec_query_stats AS qs
CROSS APPLY 
    sys.dm_exec_sql_text(qs.[sql_handle]) AS qt
WHERE
    qt.[dbid] = DB_ID()
ORDER BY
    qs.execution_count DESC
OPTION (RECOMPILE);

रिपोर्ट किए गए मान अंतिम पुनरारंभ के बाद से संचयी हैं। यदि आप एक निश्चित अवधि में मापना चाहते हैं, तो प्रतीक्षा आँकड़े रीसेट करने के लिए नीचे दी गई कमांड का उपयोग करें।

DBCC SQLPERF("sys.dm_os_wait_stats",CLEAR);

यदि आप दिन भर के निश्चित समय को मापना चाहते हैं, तो आप एक एजेंट की नौकरी के माध्यम से एक टेबल पर क्वेरी आउटपुट को फीड कर सकते हैं और या तो) दो रन या बी के बीच के मूल्यों की गणना करते हैं) प्रतीक्षा आँकड़े रीसेट करें जो एजेंट की नौकरी में अंतिम चरण के रूप में जारी करता है। ।

वैकल्पिक रूप से, एक प्रोफाइलर ट्रेस पर कब्जा करें और इसे क्लियर ट्रेस के माध्यम से चलाएं ।


ऐसा लगता है कि मुझे एक से कई परिणाम सेट मिल रहे हैं, लेकिन बिल्कुल नहीं। उदाहरण के लिए, मैं स्तंभ ऑब्जेक्ट_नाम प्रतिक्रिया के तहत एक ही ऑब्जेक्ट के कई देखता हूं लेकिन अधिकांश विवरण कुछ अपवादों के साथ समान हैं। कॉलम विवरण जो मेल खाते हैं: एक्ज़ीक्यूशनकाउंट, कॉल / सेकंड, एजकैचे। कॉलम विवरण जो मेल नहीं खाते हैं: एक्सप्रेसवर्करटाइम, टोटलवर्करटाइम, एअरप्लेसीडाइम। क्या कई परिणाम के लिए कई कारण होगा?
kstubs
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.