Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

डेटाबेस द्वारा CPU उपयोग?

की तरह। इस क्वेरी को देखें:

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 को अपडेट किया गया।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जहां खंड के साथ मूल्यों में डालें

  2. क्या करता है वर्तमान आदेश पर एक गंभीर त्रुटि हुई। यदि कोई परिणाम हैं, तो उनकी उपेक्षा की जानी चाहिए। एसक्यूएल एज़ूर त्रुटि का मतलब है?

  3. टी-एसक्यूएल के साथ दिन महीने और साल से एक तारीख बनाएं

  4. अपने SQL सर्वर क्लस्टर को सेट करने के लिए शीर्ष 9 युक्तियाँ

  5. चयन टी-एसक्यूएल कमांड से परिणाम में लौटाई गई पंक्तियों की कुल संख्या कैसे शामिल करें?