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

Azure SQL डेटाबेस प्रदर्शन ट्यूनिंग विकल्प

Azure SQL डेटाबेस Microsoft का डेटाबेस-ए-ए-सर्विस ऑफ़रिंग है जो अत्यधिक मात्रा में लचीलापन और सुरक्षा प्रदान करता है और Microsoft के प्लेटफ़ॉर्म-एज़-ए-सर्विस के हिस्से के रूप में, अतिरिक्त सुविधाओं का लाभ उठाता है। चूंकि Azure SQL डेटाबेस डेटाबेस के दायरे में है, इसलिए प्रदर्शन ट्यूनिंग के मामले में कुछ बड़े अंतर हैं।

इंस्टेंस को ट्यून करना

कई इंस्टेंस-स्तरीय आइटम जिन्हें आपने पूर्ण इंस्टॉलेशन पर कॉन्फ़िगर करने के लिए उपयोग किया है, वे सीमा से बाहर हैं। इनमें से कुछ वस्तुओं में शामिल हैं:

  • न्यूनतम और अधिकतम सर्वर मेमोरी सेट करना
  • तदर्थ कार्यभार के लिए अनुकूलन सक्षम करना
  • समानता के लिए लागत सीमा बदलना
  • उदाहरण-स्तर पर समानता की अधिकतम डिग्री बदलना
  • एकाधिक डेटा फ़ाइलों के साथ tempdb अनुकूलित करना
  • ट्रेस फ़्लैग

इनमें से कुछ के बारे में बहुत परेशान न हों। ALTER DATABASE स्कोप्ड कॉन्फिगरेशन स्टेटमेंट व्यक्तिगत डेटाबेस स्तर पर काफी कुछ कॉन्फ़िगरेशन सेटिंग्स की अनुमति देता है। इसे Azure SQL डेटाबेस और SQL Server 2016 के साथ प्रारंभ होने वाले SQL सर्वर में पेश किया गया था। इनमें से कुछ सेटिंग्स में शामिल हैं:

  • प्रक्रिया कैश साफ़ करें
  • MAXDOP को शून्य के अलावा किसी अन्य मान पर सेट करना
  • क्वेरी अनुकूलक कार्डिनैलिटी अनुमान मॉडल सेट करें
  • क्वेरी अनुकूलन हॉटफिक्स को सक्षम या अक्षम करें
  • पैरामीटर सूँघने को सक्षम या अक्षम करें
  • पहचान कैश सक्षम या अक्षम करें
  • जब किसी बैच को पहली बार संकलित किया जाता है तो कैश में संग्रहीत करने के लिए संकलित योजना स्टब को सक्षम या अक्षम करें।
  • स्थानीय रूप से संकलित टी-एसक्यूएल मॉड्यूल के लिए निष्पादन आंकड़ों के संग्रह को सक्षम या अक्षम करें।
  • ऑनलाइन =चालू/बंद सिंटैक्स का समर्थन करने वाले डीडीएल कथनों के लिए डिफ़ॉल्ट विकल्पों द्वारा ऑनलाइन सक्षम या अक्षम करें।
  • DDL कथनों के लिए डिफ़ॉल्ट विकल्पों द्वारा पुन:प्रारंभ करने योग्य सक्षम या अक्षम करें जो RESUMABLE=ON/OFF सिंटैक्स का समर्थन करते हैं।
  • वैश्विक अस्थायी तालिकाओं की ऑटो-ड्रॉप कार्यक्षमता को सक्षम या अक्षम करें

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

उन कंपनियों के लिए जिनके पास प्रति ग्राहक एक डेटाबेस है, जिन्हें पूर्ण अलगाव की आवश्यकता है, जो कि Azure SQL डेटाबेस में बनाया गया है। उन लोगों के लिए जिन्हें SQL सर्वर की इंस्टेंस-स्तरीय क्षमताओं की आवश्यकता है, लेकिन Microsoft की Paa पेशकश का लाभ उठाना चाहते हैं, उनके लिए Azure SQL प्रबंधित इंस्टेंस है, जो इंस्टेंस-स्कोप है। SQL सर्वर के साथ 100% सतह क्षेत्र संगतता का लक्ष्य है; इसलिए, आप न्यूनतम और अधिकतम सर्वर मेमोरी सेट कर सकते हैं, एडहॉक वर्कलोड के लिए ऑप्टिमाइज़ को सक्षम कर सकते हैं, और समानांतरवाद के लिए MAXDOP और लागत सीमा दोनों को बदल सकते हैं। एक प्रबंधित इंस्टेंस पर Tempdb में पहले से ही कई फ़ाइलें हैं, लेकिन आप अधिक जोड़ सकते हैं, और डिफ़ॉल्ट आकार बढ़ा सकते हैं। कई मायनों में, यह वास्तव में SQL सर्वर की पूर्ण स्थापना जैसा लगता है।

क्वेरी ट्यूनिंग

Azure SQL डेटाबेस और SQL सर्वर के बीच एक और अंतर यह है कि Azure SQL डेटाबेस में डिफ़ॉल्ट रूप से क्वेरी स्टोर सक्षम है। आप क्वेरी स्टोर को बंद कर सकते हैं, लेकिन फिर आप इसका उपयोग करने वाले Azure पोर्टल में इंटेलिजेंट प्रदर्शन टूल को सीमित कर सकते हैं। क्वेरी स्टोर एक ऐसी सुविधा है जो क्वेरी प्रदर्शन और योजना पसंद में अंतर्दृष्टि प्रदान करती है। क्वेरी स्टोर प्रश्नों, योजनाओं और रनटाइम आंकड़ों के इतिहास को भी कैप्चर करता है ताकि आप समीक्षा कर सकें कि क्या हो रहा है। क्या आप जानना चाहते हैं कि किस क्वेरी में सबसे अधिक रीकंपाइल समय, निष्पादन समय, निष्पादन गणना, सीपीयू उपयोग, मेमोरी उपयोग, सबसे अधिक भौतिक पढ़ने/लिखने, और बहुत कुछ है? क्वेरी स्टोर में वह जानकारी है। SQL सर्वर के लिए, आपको प्रति डेटाबेस इस सुविधा को सक्षम करना होगा। यदि आप क्वेरी स्टोर में नए हैं, तो मेरे सहयोगी एरिन स्टेलेटो के पास प्लूरलसाइट पर तीन घंटे का कोर्स है जो आपको आरंभ करने में मदद करेगा।

बुद्धिमान प्रदर्शन उपकरण श्रेणी में चार विशेषताएं हैं। सबसे पहले, प्रदर्शन अवलोकन सीपीयू खपत द्वारा शीर्ष 5 प्रश्नों को सूचीबद्ध करके, स्वचालित ट्यूनिंग, ट्यूनिंग गतिविधि और वर्तमान स्वचालित ट्यूनिंग सेटिंग्स से किसी भी अनुशंसा को सूचीबद्ध करके आपके समग्र डेटाबेस प्रदर्शन का सारांश प्रदान करता है। यह लैंडिंग पृष्ठ आपको आपके प्रदर्शन की एक त्वरित झलक देता है।

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

तीसरा, क्वेरी प्रदर्शन अंतर्दृष्टि वह जगह है जहां आप सीपीयू, डेटा I/O, या लॉग I/O द्वारा शीर्ष 5 प्रश्नों को देखकर अपने संसाधन खपत में गहरी अंतर्दृष्टि प्राप्त कर सकते हैं। शीर्ष 5 प्रश्नों को रंग-कोडित किया गया है ताकि आप समग्र खपत का प्रतिशत तुरंत देख सकें। SQL टेक्स्ट सहित अधिक विवरण प्राप्त करने के लिए आप क्वेरी-आईडी पर क्लिक कर सकते हैं। एक लंबे समय तक चलने वाला क्वेरी टैब भी है। मुझे वास्तव में यह पसंद है कि Microsoft ने Azure पोर्टल में इस तरह की एक सुविधा बिना किसी कीमत के शामिल की है। यह ग्राहकों को शीर्ष आपत्तिजनक प्रश्नों को देखने के लिए एक पोर्टल देकर मूल्य प्रदान करता है। मुझे यहां जो चुनौतीपूर्ण लगता है, वह यह है कि दिन-प्रतिदिन, सप्ताह से सप्ताह और पिछले महीने की तुलना के लिए एक समग्र आधार रेखा देखने का एक तरीका है। हालांकि, त्वरित विश्लेषण और अवलोकन के लिए, क्वेरी प्रदर्शन अंतर्दृष्टि सहायक होती है।

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

बिल्ट-इन टूल्स के अलावा और क्वेरी स्टोर का उपयोग करने के मूल्य के साथ, DMV भी आसानी से उपलब्ध हैं। ग्लेन बेरी के पास केवल Azure SQL डेटाबेस के लिए स्क्रिप्ट का एक संपूर्ण संग्रह है जिसका आप उपयोग कर सकते हैं। एक विशेष डीएमवी जिसे मैं कॉल करना चाहता हूं वह है sys.dm_os_wait_stats। यह सर्वर स्तर से खींचेगा, इसलिए यदि आप वास्तव में डेटाबेस स्तर के लिए प्रतीक्षा आँकड़े देखना चाहते हैं, तो आपको इसके बजाय sys.dm_db_wait_stats का उपयोग करने की आवश्यकता होगी।

हार्डवेयर - स्केलिंग

Azure SQL डेटाबेस के साथ प्रदर्शन को देखते समय विचार का एक अन्य क्षेत्र अंतर्निहित हार्डवेयर है। Azure SQL डेटाबेस की कीमत डेटाबेस ट्रांज़ैक्शन यूनिट्स (DTUs) और vCores द्वारा निर्धारित की जाती है। डीटीयू सीपीयू, मेमोरी और आई/ओ का एक मिश्रित माप है, और तीन स्तरों में आता है; बेसिक, स्टैंडर्ड और प्रीमियम। बेसिक केवल 5 डीटीयू है, मानक 10-3,000 डीटीयू से है, और प्रीमियम 125-4,000 डीटीयू से है। vCore-आधारित स्तरों के लिए हमारे पास 1-80 vCores से लेकर सामान्य प्रयोजन और व्यावसायिक महत्वपूर्ण हैं।

डीटीयू मॉडल में विकास और परीक्षण के लिए बेसिक पर विचार किया जाना चाहिए। इसमें केवल 7 दिन का बैकअप प्रतिधारण है, इसलिए मैं इसे किसी भी उत्पादन डेटा के लिए व्यवहार्य नहीं मानूंगा। मध्यम से निम्न I/O मांग के साथ निम्न, मध्यम और उच्च CPU मांग के लिए मानक अच्छा है। बेसिक और स्टैंडर्ड टियर 5ms (रीड), 10ms (राइट) के साथ 2.5 IOPS प्रति DTU प्रदान करता है। प्रीमियम टियर मध्यम से उच्च CPU मांग और उच्च I/O की पेशकश के लिए 2ms (रीड/राइट) के साथ प्रति DTU 48 IOPS की पेशकश करता है। प्रीमियम टियर में भंडारण होता है जो उस मानक के परिमाण के क्रम में तेजी से होता है। vCore मॉडल में, आपके पास Gen4 प्रोसेसर हैं जो प्रति भौतिक कोर में 7GB RAM और Gen 5 प्रोसेसर प्रदान करते हैं जो प्रति लॉजिकल कोर 5.1GB RAM प्रदान करते हैं। I/O के दृष्टिकोण से सामान्य प्रयोजन 7,000 अधिकतम के साथ 500 IOPS प्रति vCore प्रदान करता है। बिजनेस क्रिटिकल 200,000 अधिकतम के साथ प्रति कोर 5,000 आईओपीएस प्रदान करता है।

सारांश

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

जब सब कुछ विफल हो जाता है, या आपका कार्यभार आपके वर्तमान हार्डवेयर संसाधनों से पहले ही बढ़ गया है, तो उच्च स्तर पर स्केल करें।


  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. SQL में विशिष्ट मानों की गणना कैसे करें

  4. Google BigQuery को IRI Voracity सॉफ़्टवेयर से कनेक्ट करना

  5. SQL के साथ टेबल और कॉलम कैसे ड्रॉप करें