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

मैं सबसे महंगी क्वेरी कैसे लॉग और ढूँढ सकता हूँ?

  1. इन घटनाओं को लॉग करने वाला ट्रेस बनाने के लिए SQL सर्वर प्रोफाइलर (SSMS में टूल मेनू पर) का उपयोग करें:

     RPC:Completed
     SP:Completed
     SP:StmtCompleted
     SQL:BatchCompleted
     SQL:StmtCompleted
    
  2. आप मानक ट्रेस टेम्पलेट से शुरू कर सकते हैं और इसे काट सकते हैं। आपने यह निर्दिष्ट नहीं किया कि यह एक विशिष्ट डेटाबेस या पूरे सर्वर के लिए था, यदि यह विशिष्ट डीबी के लिए है, तो डेटाबेस आईडी कॉलम शामिल करें और अपने डीबी पर एक फ़िल्टर सेट करें (SELECT DB_ID('dbname') ) सुनिश्चित करें कि तार्किक रीड्स डेटा कॉलम प्रत्येक ईवेंट के लिए शामिल है। फ़ाइल में लॉग इन करने के लिए ट्रेस सेट करें। यदि आप पृष्ठभूमि में अप्राप्य चलाने के लिए इस ट्रेस को छोड़ रहे हैं, तो अधिकतम ट्रेस फ़ाइल आकार 500 एमबी या 1 जीबी सेट करना एक अच्छा विचार है यदि आपके पास बहुत जगह है (यह सब इस बात पर निर्भर करता है कि सर्वर पर कितनी गतिविधि है, इसलिए आपको इसे चूसना होगा और देखना होगा)।

  3. संक्षेप में ट्रेस प्रारंभ करें और फिर उसे रोक दें। गोटो फ़ाइल-> निर्यात-> स्क्रिप्ट ट्रेस परिभाषा और अपना डीबी संस्करण चुनें, और एक फ़ाइल में सहेजें। अब आपके पास एक एसक्यूएल स्क्रिप्ट है जो एक ट्रेस बनाता है जिसमें प्रोफाइलर जीयूआई के माध्यम से चलने से बहुत कम ओवरहेड होता है। जब आप इस स्क्रिप्ट को चलाते हैं तो यह ट्रेस आईडी आउटपुट करेगा (आमतौर पर @ID=2 ); इसे नोट कर लें।

  4. एक बार जब आपके पास एक ट्रेस फ़ाइल (.trc) हो जाती है (या तो अधिकतम फ़ाइल आकार तक पहुँचने के कारण ट्रेस पूरा हो गया है या आपने

    का उपयोग करके चल रहे ट्रेस को रोक दिया है।

    EXEC sp_trace_setstatus @ID, 0
    EXEC sp_trace_setstatus @ID, 2

आप ट्रेस को प्रोफाइलर में लोड कर सकते हैं, या ClearTrace (बहुत आसान) का उपयोग कर सकते हैं या इसे तालिका में लोड कर सकते हैं:

SELECT * INTO TraceTable
FROM ::fn_trace_gettable('C:\location of your trace output.trc', default)

फिर आप इस तरह के डेटा को एकत्रित करने के लिए एक क्वेरी चला सकते हैं:

SELECT COUNT(*) AS TotalExecutions, 
    EventClass, CAST(TextData as nvarchar(2000))
 ,SUM(Duration) AS DurationTotal
 ,SUM(CPU) AS CPUTotal
 ,SUM(Reads) AS ReadsTotal
 ,SUM(Writes) AS WritesTotal
FROM TraceTable
GROUP BY EventClass, CAST(TextData as nvarchar(2000))
ORDER BY ReadsTotal DESC

एक बार जब आप महंगे प्रश्नों की पहचान कर लेते हैं, तो आप वास्तविक निष्पादन योजनाओं को उत्पन्न और जांच सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में INSERT INTO के रूप में डेटा निर्यात करना

  2. SQL सर्वर प्रदर्शन टॉप IO क्वेरी -2

  3. शुरुआती लोगों के लिए SQL सर्वर 2016 में पूर्ण-पाठ खोज लागू करना

  4. SQL सर्वर अनुक्रमणिका - आरोही या अवरोही, इससे क्या फर्क पड़ता है?

  5. SQL सर्वर तालिका से यादृच्छिक पंक्तियाँ कैसे प्राप्त करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 117