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

SQL सर्वर निष्पादन योजनाओं को कैसे पढ़ें और उनका विश्लेषण कैसे करें

SQL सर्वर निष्पादन योजनाएँ डेटाबेस पेशेवरों के लिए क्वेरी ऑप्टिमाइज़र और क्वेरी निष्पादन के लिए एक प्रवेश द्वार हैं। वे क्वेरी प्रोसेसिंग और प्रभावित चरणों जैसे प्रभावित टेबल, इंडेक्स, आंकड़े, जुड़ने के प्रकार, प्रभावित पंक्तियों की संख्या, क्वेरी प्रोसेसिंग, डेटा सॉर्ट और डेटा पुनर्प्राप्ति को प्रकट करते हैं।

पिछले लेख में, SQL सर्वर निष्पादन योजना — यह क्या है और यह प्रदर्शन समस्याओं में कैसे मदद करती है? हमने वास्तविक और अनुमानित निष्पादन योजनाओं के साथ उच्च-स्तरीय क्वेरी निष्पादन वर्कफ़्लो, विभिन्न प्रकार की निष्पादन योजनाओं (ग्राफ़िकल, XML और टेक्स्ट) की खोज की।

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

एक ग्राफिकल SQL सर्वर निष्पादन योजना पढ़ना

आम तौर पर, हम निष्पादन योजनाओं को दाएं से बाएं पढ़ते हैं। आप शीर्ष दाएं-सबसे निष्पादन योजना ऑपरेटर से शुरू करते हैं और बाईं ओर बढ़ते हैं। यह क्वेरी में तार्किक डेटा प्रवाह का अनुसरण करने में आपकी सहायता करता है।

मान लीजिए कि आप [AdventureWorks2019] नमूना डेटाबेस में निम्न क्वेरी निष्पादित करते हैं और वास्तविक निष्पादन योजना देखते हैं।

SELECT TOP (10) [SalesOrderID] [SalesOrderDetailID] [CarrierTrackingNumber] [OrderQty] [ProductID] [SpecialOfferID] [ModifiedDate] FROM [AdventureWorks2019].[Sales].[SalesOrderDetail] where [UnitPrice]>1000

क्वेरी [बिक्री] से डेटा पुनर्प्राप्त करती है। [SalesOrderDetail] तालिका 1,000 से अधिक इकाई मूल्य वाले ऑर्डर के लिए।

यदि हम निष्पादन योजना को दाएं से बाएं पढ़ते हैं, तो हम निम्नलिखित पर ध्यान देंगे:

  • पहला ऑपरेटर क्लस्टर्ड इंडेक्स स्कैन है जो [Sales].[SalesOrderDetail] टेबल से डेटा पढ़ता है। जब आप अपने माउस पॉइंटर को क्लस्टर इंडेक्स स्कैन और टॉप ऑपरेटर को जोड़ने वाले तीर पर ले जाते हैं, तो यह पंक्तियों की अनुमानित और वास्तविक संख्या और अनुमानित डेटा आकार देता है।

  • यह क्लस्टर्ड इंडेक्स स्कैन ऑपरेटर से डेटा को टॉप ऑपरेटर को पास करता है और 10 पंक्तियों को सेलेक्ट ऑपरेटर को पास करता है।

आंतरिक रूप से, SQL सर्वर योजना को बाएं से दाएं निष्पादित करता है। यदि आप ऑपरेटर के भौतिक आदेशों में रुचि रखते हैं, तो आपको एक निष्पादन योजना को बाएं से दाएं पढ़ना चाहिए। प्रत्येक ऑपरेटर अगले ऑपरेटर से डेटा का अनुरोध करता है। उदाहरण के लिए, उपरोक्त परिदृश्य में, शीर्ष ऑपरेटर क्लस्टर्ड इंडेक्स स्कैन से डेटा का अनुरोध करता है। क्लस्टर्ड इंडेक्स स्कैन [सेल्स] से पंक्तियां लौटाता है।[SalesOrderDetail] तालिका जो कहां को संतुष्ट करती है खंड शर्त।

एक निष्पादन योजना में कई शाखाओं के विलय होने की स्थिति में, आपको दाएं से बाएं, ऊपर से नीचे तक के दृष्टिकोण का पालन करना चाहिए।

संचालक लागत

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

एक जटिल निष्पादन योजना की स्थिति में, महंगे ऑपरेटर की पहचान करना चुनौतीपूर्ण हो सकता है। इस मामले में, आप SHOWPLAN_ALL ON सेट करें, . का उपयोग कर सकते हैं और यह एक सारणीबद्ध प्रारूप में जानकारी प्रदान करेगा।

आप प्रत्येक ऑपरेटर और स्टेटमेंट स्तर पर निष्पादन योजना को तोड़ने के लिए [Stmt टेक्स्ट] का भी उपयोग कर सकते हैं।

SQL सर्वर प्रबंधन स्टूडियो (SSMS) खोज मानदंड के आधार पर एक ऑपरेटर को खोजने की सुविधा भी देता है। ऐसा करने के लिए, निष्पादन योजना पर राइट-क्लिक करें और चुनें नोड खोजें। यह विभिन्न खोज स्थितियों के साथ एक विंडो खोलेगा। अपनी आवश्यकता निर्दिष्ट करें, और यह विशेष नोड को इंगित करेगा, जैसा कि नीचे दिखाया गया है।

वैकल्पिक रूप से, आप Azure डेटा स्टूडियो का उपयोग कर सकते हैं और वास्तविक योजना के साथ वर्तमान क्वेरी चलाएँ  पर नेविगेट कर सकते हैं कमांड पैलेट के तहत। यह महंगे ऑपरेटरों की शीघ्रता से पहचान करने के लिए शीर्ष संचालन के साथ-साथ एक कॉम्पैक्ट रूप में एक वास्तविक निष्पादन योजना देता है।

शोप्लान विश्लेषण

समस्याग्रस्त निष्पादन योजनाओं की जांच के लिए आप एक गलत कार्डिनैलिटी अनुमान की पहचान कर सकते हैं। यह आपको शोप्लान विश्लेषण टैब में किसी विशेष ऑपरेटर और अनुशंसाओं को खोजने के बारे में संक्षिप्त जानकारी देगा। निष्पादन योजना में विशिष्ट ऑपरेटर के लिए समस्या और अनुशंसाओं को खोजने के लिए आप अंतर, वास्तविक और अनुमानित कॉलम में परिणाम को सॉर्ट कर सकते हैं। यह SSMS 17.4 से उपलब्ध है।

ऐसा करने के लिए, बस निष्पादन योजना पर राइट-क्लिक करें और फिर वास्तविक निष्पादन योजना का विश्लेषण करें पर क्लिक करें।

फिर, विवरण ढूंढ़ना . के अंतर्गत हाइपरलिंक पर क्लिक करें . यह अनुमान की अशुद्धि के संभावित परिदृश्यों की व्याख्या करेगा और इन अनुमानों को बेहतर बनाने के लिए समाधान प्रदान करेगा। कार्डिनैलिटी अनुमान संबंधी समस्याओं के लिए यह एक अच्छा प्रारंभिक बिंदु है।

शोप्लान की तुलना करें

मान लीजिए कि आपने निष्पादन योजना में किसी समस्या की पहचान की है और आपने इसे ठीक करने के लिए एक समाधान लागू किया है। लेकिन, आप पिछली निष्पादन योजना (समाधान को लागू करने से पहले कैसा था) और वर्तमान निष्पादन योजना की तुलना कैसे करेंगे? एसएसएमएस शोप्लान की तुलना करें सुविधा आपको दो निष्पादन योजनाओं की तुलना करने की सुविधा देती है। यह इन योजनाओं के बीच समानता और अंतर पर प्रकाश डालता है।

आमतौर पर, डीबीए को डेवलपर्स से एक कॉल मिलता है कि एक विशेष क्वेरी उत्पादन में ठीक काम कर रही है, लेकिन समान मापदंडों के साथ क्यूए वातावरण में लंबा समय ले रही है। एक अन्य उपयोग मामला SQL सर्वर के नए संस्करण में माइग्रेट कर रहा है। मान लीजिए कि माइग्रेशन के बाद, आप एक क्वेरी के साथ समस्याओं का सामना करते हैं जो निम्न SQL संस्करण में ठीक काम करती है। आप इस टूल का उपयोग विभिन्न SQL संस्करणों और पैच स्तरों की निष्पादन योजनाओं की तुलना करने के लिए भी कर सकते हैं।

निष्पादन योजना को SQLPlan . में सहेजें विस्तार। उसके बाद, आप किसी अन्य निष्पादन योजना पर राइट-क्लिक कर सकते हैं और शोप्लान की तुलना करें . का चयन कर सकते हैं ।

SSMS में लाइव निष्पादन योजनाएं

आप एक सक्रिय क्वेरी की लाइव निष्पादन योजना को सक्षम कर सकते हैं। यह आपको विभिन्न ऑपरेटरों को डेटा प्रवाह के बारे में रीयल-टाइम आंकड़े देगा। रन टाइम निष्पादन के आंकड़ों में, आप बीता हुआ समय और पंक्तियों की संख्या को ट्रैक कर सकते हैं। यह समस्या निवारण और प्रदर्शन समस्याओं को डीबग करने के लिए एक उत्कृष्ट विशेषता है। आप SQL सर्वर 2016 और इसके बाद के संस्करण के लाइव क्वेरी आंकड़ों का उपयोग कर सकते हैं।

नोट:आपको SSMS के नवीनतम संस्करण का उपयोग करना चाहिए। SSMS का नवीनतम संस्करण डाउनलोड करने के लिए Microsoft दस्तावेज़ देखें।

  • वर्तमान नवीनतम संस्करण:SSMS 18.7.1

लाइव क्वेरी आंकड़ों के लिए, लाइव क्वेरी आंकड़े शामिल करें . चालू करें SSMS टूलबार का उपयोग करना।

आप लाइव निष्पादन योजना को गतिविधि मॉनिटर . से भी देख सकते हैं . गतिविधि मॉनिटर में, वांछित प्रक्रिया का चयन करें, मेनू देखने के लिए उस पर राइट-क्लिक करें और लाइव निष्पादन योजना दिखाएं चुनें।

यह आपको अलग-अलग ऑपरेटरों के डेटा प्रवाह और पूर्णता प्रतिशत के साथ-साथ लाइव क्वेरी अनुमान देता है। आमतौर पर, हम वास्तविक निष्पादन योजना को समाप्त करने और देखने के लिए क्वेरी निष्पादन की प्रतीक्षा करते हैं। लेकिन, मान लीजिए कि आपकी क्वेरी को परिणाम देने में 30 मिनट से अधिक समय लगता है। इस मामले में, आप अलग-अलग ऑपरेटरों, डेटा प्रवाह को ट्रैक करने के लिए लाइव क्वेरी आंकड़ों का उपयोग कर सकते हैं और यह इंगित कर सकते हैं कि कौन सा ऑपरेटर क्वेरी को पूरा करने में समय ले रहा है। उदाहरण के लिए, जैसा कि नीचे दिखाया गया है, क्वेरी 12 मिनट 48 सेकंड के लिए चल रही है, और क्वेरी 20% पूर्ण होने का अनुमान है। ऑपरेटर स्तर पर, इंडेक्स स्कैन और रो काउंट स्पूल 41% पूर्ण हैं। बिंदीदार रेखाएं डेटा गति दिखाती हैं।

SQL सर्वर निष्पादन योजना उपयोग की समीक्षा करना

SQL सर्वर निष्पादन योजनाएँ धीमी क्वेरी के समस्या निवारण और अनुकूलन में अविश्वसनीय रूप से उपयोगी हैं। निष्पादन योजना उपलब्ध होने के बाद प्रत्येक डेटाबेस पेशेवर को यह जानना होगा कि जानकारी का विश्लेषण और समझ कैसे करें। जैसा कि पहले बताया गया है, SSMS और Azure डेटा स्टूडियो में प्रदर्शन संबंधी समस्याओं की समीक्षा करने और उन्हें हल करने में आपकी मदद करने के लिए कई टूल हैं—जब आप परिवर्तन करना और प्रदर्शन का आकलन करना शुरू करते हैं तो विशेष रूप से तुलना योजना सुविधा का लाभ उठाया जा सकता है।


  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 सर्वर डेटाबेस बैकअप एन्क्रिप्शन

  2. नवरचर (अधिकतम) के लिए मुझे टीएसक्यूएल में केवल 4000 वर्ण मिल रहे हैं?

  3. उपयोगकर्ता 'DOMAIN\MACHINENAME$' के लिए लॉगिन विफल

  4. SQL सर्वर बिट डेटाटाइप - अल्टीमेट गाइड

  5. MS SQL सर्वर में 24/7 IS डेटाबेस का शेड्यूल्ड रखरखाव