की तरह। इस क्वेरी को देखें:
SELECT total_worker_time/execution_count AS AvgCPU
, total_worker_time AS TotalCPU
, total_elapsed_time/execution_count AS AvgDuration
, total_elapsed_time AS TotalDuration
, (total_logical_reads+total_physical_reads)/execution_count AS AvgReads
, (total_logical_reads+total_physical_reads) AS TotalReads
, execution_count
, SUBSTRING(st.TEXT, (qs.statement_start_offset/2)+1
, ((CASE qs.statement_end_offset WHEN -1 THEN datalength(st.TEXT)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) AS txt
, query_plan
FROM sys.dm_exec_query_stats AS qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) AS st
cross apply sys.dm_exec_query_plan (qs.plan_handle) AS qp
ORDER BY 1 DESC
यह आपको प्लान कैश में प्रश्नों को प्राप्त करेगा कि उन्होंने कितना CPU उपयोग किया है। आप इसे समय-समय पर चला सकते हैं, जैसे SQL एजेंट जॉब में, और यह सुनिश्चित करने के लिए कि डेटा रीबूट के बाद भी बना रहता है, परिणामों को तालिका में सम्मिलित करें।
जब आप परिणाम पढ़ते हैं, तो आप शायद महसूस करेंगे कि हम उस डेटा को सीधे किसी व्यक्तिगत डेटाबेस से सहसंबंधित क्यों नहीं कर सकते हैं। सबसे पहले, एक एकल क्वेरी इस तरह की तरकीबें करके अपने वास्तविक डेटाबेस पैरेंट को भी छिपा सकती है:
USE msdb
DECLARE @StringToExecute VARCHAR(1000)
SET @StringToExecute = 'SELECT * FROM AdventureWorks.dbo.ErrorLog'
EXEC @StringToExecute
क्वेरी को MSDB में निष्पादित किया जाएगा, लेकिन यह AdventureWorks के परिणामों का सर्वेक्षण करेगा। हमें CPU खपत कहाँ निर्दिष्ट करनी चाहिए?
यह तब और खराब हो जाता है जब आप:
- एकाधिक डेटाबेस के बीच में शामिल हों
- एक से अधिक डेटाबेस में लेन-देन चलाएं, और लॉक करने का प्रयास कई डेटाबेस तक फैला है
- MSDB में SQL एजेंट जॉब चलाएं जो MSDB में "काम" करते हैं, लेकिन अलग-अलग डेटाबेस का बैकअप लेते हैं
यह चलता ही जाता है। इसलिए डेटाबेस स्तर के बजाय क्वेरी स्तर पर प्रदर्शन ट्यून करना समझ में आता है।
SQL सर्वर 2008R2 में, Microsoft ने प्रदर्शन प्रबंधन और ऐप प्रबंधन सुविधाएँ पेश कीं जो हमें एक वितरण योग्य और परिनियोजित DAC पैक में एकल डेटाबेस को पैकेज करने देंगी, और वे व्यक्तिगत डेटाबेस और उनके अनुप्रयोगों के प्रदर्शन को प्रबंधित करना आसान बनाने के लिए सुविधाओं का वादा कर रहे हैं। हालांकि, यह अभी भी वह नहीं करता जो आप खोज रहे हैं।
उनमें से अधिक के लिए, टॉड वर्ल्ड के SQL सर्वर विकी (पूर्व में SQLServerPedia पर) पर T-SQL रिपॉजिटरी ।
केवल औसत के बजाय कुल संख्याओं को शामिल करने के लिए 1/29 को अपडेट किया गया।