एक डेटाबेस प्रदर्शन में गिरावट का अनुभव कर रहा है। शीर्ष संसाधन-खपत वाली क्वेरीज़ की पहचान करने, योजना परिवर्तनों को ट्रैक करने और प्रदर्शन प्रतिगमन खोजने की आवश्यकता है।
→Query Store को सक्षम और उपयोग करें।
क्यों: Query Store क्वेरी प्रदर्शन के लिए अंतर्निहित "फ्लाइट डेटा रिकॉर्डर" है। यह स्वचालित रूप से क्वेरी इतिहास, प्लान और वेट स्टैट्स को कैप्चर करता है, जिससे यह समय के साथ प्रदर्शन समस्याओं का निदान करने के लिए प्राथमिक उपकरण बन जाता है।
संदर्भ↗
एक क्वेरी कभी-कभी अच्छा प्रदर्शन करती है लेकिन parameter sniffing समस्याओं के कारण अन्य समय में खराब प्रदर्शन करती है, जहां एक execution plan एक गैर-प्रतिनिधि पैरामीटर मान के लिए अनुकूलित होती है।
→विभिन्न प्लान्स की पहचान करने और लगातार अच्छी execution plan को लागू करने के लिए Query Store का उपयोग करें।
क्यों: Query Store में प्लान फ़ोर्सिंग कोड परिवर्तनों के बिना समस्याग्रस्त क्वेरीज़ के प्रदर्शन को स्थिर करने का एक त्वरित और प्रभावी तरीका प्रदान करती है। यह एक ज्ञात-अच्छी योजना के साथ ऑप्टिमाइज़र की पसंद को ओवरराइड करता है।
कोड परिवर्तनों के बिना क्वेरी प्रदर्शन में सुधार करने के लिए, rowstore पर batch mode, memory grant feedback, और table variable deferred compilation जैसी सुविधाओं का लाभ उठाना।
→डेटाबेस कंपैटिबिलिटी स्तर को 150 (SQL 2019 सुविधाओं के लिए) या उससे अधिक पर सेट करें।
क्यों: Intelligent Query Processing (IQP) फीचर सेट डेटाबेस कंपैटिबिलिटी स्तर द्वारा सक्षम किया जाता है। स्तर 150+ क्वेरी प्रोसेसर में "नो-कोड-चेंज" प्रदर्शन सुधारों की एक विस्तृत श्रृंखला को सक्रिय करता है।
ऑपरेशंस टीम को सूचित किया जाना चाहिए जब मुख्य प्रदर्शन मेट्रिक्स, जैसे CPU प्रतिशत या deadlocks, एक परिभाषित सीमा से अधिक हो जाते हैं।
→CPU के लिए metric alerts और deadlocks के लिए log alerts बनाने के लिए Azure Monitor का उपयोग करें जो एक Action Group को ट्रिगर करता है।
क्यों: Azure Monitor Azure संसाधनों की निगरानी और अलर्टिंग के लिए केंद्रीकृत प्लेटफ़ॉर्म है। Action Groups लचीले नोटिफिकेशन चैनल (ईमेल, SMS, वेबहुक, आदि) प्रदान करते हैं।
किसी भी रीड क्वेरी द्वारा उपयोग नहीं किए जा रहे indexes की पहचान करके और उन्हें हटाकर राइट प्रदर्शन में सुधार करें।
→`sys.dm_db_index_usage_stats` DMV को क्वेरी करें।
क्यों: यह DMV इंडेक्स उपयोग (सीक, स्कैन, लुकअप) बनाम अपडेट को ट्रैक करता है। उच्च अपडेट वाले लेकिन शून्य या बहुत कम उपयोग वाले indexes हटाने के लिए प्रमुख उम्मीदवार होते हैं, जिससे रखरखाव ओवरहेड कम होता है।
बीच-बीच में होने वाली ब्लॉकिंग समस्याओं के बारे में विस्तृत जानकारी कैप्चर करने की आवश्यकता है, जिसमें ब्लॉकिंग चेन में शामिल स्टेटमेंट और सेशन शामिल हैं।
→एक Extended Events सेशन कॉन्फ़िगर करें जो `blocked_process_report` इवेंट को कैप्चर करता है।
क्यों: यह इवेंट ब्लॉकिंग चेन की विस्तृत XML रिपोर्ट प्रदान करता है जब `blocked process threshold` पार हो जाता है, जो DMVs में उपलब्ध न होने वाली गहन नैदानिक जानकारी प्रदान करता है।
एक डेटाबेस को अपनी इंडेक्स रणनीति को मैन्युअल हस्तक्षेप के बिना बदलते वर्कलोड पैटर्न के अनुकूल स्वचालित रूप से करने की आवश्यकता है।
→Azure SQL Database Automatic tuning में CREATE_INDEX विकल्प सक्षम करें।
क्यों: यह सुविधा Azure को वर्कलोड का विश्लेषण करने, उच्च प्रभाव वाले missing indexes की पहचान करने, उन्हें बनाने और उनके प्रदर्शन लाभ को मान्य करने की अनुमति देती है, जिससे एक प्रमुख DBA कार्य स्वचालित हो जाता है।
Business Critical या Premium टियर में प्राथमिक OLTP डेटाबेस से रीड-हैवी रिपोर्टिंग वर्कलोड को ऑफलोड करें।
→एप्लिकेशन की रीड-ओनली कनेक्शन स्ट्रिंग्स को `ApplicationIntent=ReadOnly` शामिल करने के लिए संशोधित करें।
क्यों: इन टियर में एक मुफ्त, अंतर्निहित पठनीय सेकेंडरी रेप्लिका शामिल है। कनेक्शन स्ट्रिंग में `ApplicationIntent` प्रॉपर्टी स्वचालित रूप से रीड-ओनली कनेक्शन को इस रेप्लिका पर रूट करती है, जिससे रीड वर्कलोड को अलग किया जाता है।
एक डेटा वेयरहाउस में एक बड़ी फैक्ट तालिका का अक्सर एकत्रीकरण क्वेरी (SUM, COUNT, AVG) के लिए उपयोग किया जाता है जो धीरे-धीरे प्रदर्शन कर रही हैं।
→फैक्ट तालिका पर एक clustered columnstore index बनाएं।
क्यों: Columnstore indexes डेटा को कॉलम फ़ॉर्मेट में संग्रहीत करते हैं, जिससे बहुत अधिक डेटा कम्प्रेशन मिलता है और batch mode execution सक्षम होता है, जो एग्रीगेशन और स्कैन-हैवी एनालिटिकल क्वेरीज़ को नाटकीय रूप से तेज करता है।
एक डेटाबेस रीड क्वेरीज़ (रिपोर्ट) और राइट क्वेरीज़ (ट्रांजेक्शन) के बीच महत्वपूर्ण ब्लॉकिंग कंटेन्शन का अनुभव करता है।
→डेटाबेस पर Read Committed Snapshot Isolation (RCSI) सक्षम करें।
क्यों: RCSI row versioning का उपयोग करता है, जिससे रीडर्स को साझा लॉक लिए बिना डेटा का अंतिम कमिटेड संस्करण देखने की अनुमति मिलती है, जिससे लेखकों से ब्लॉक समाप्त हो जाते हैं। लेखक रीडर्स को ब्लॉक नहीं करते हैं।
एक Serverless डेटाबेस का उपयोग करने वाला एक एप्लिकेशन निष्क्रियता की अवधि के बाद प्रारंभिक धीमे कनेक्शन समय का अनुभव करता है।
→ऑटो-पॉज़ देरी को कम करें या शून्य से अधिक न्यूनतम vCore मान कॉन्फ़िगर करें।
क्यों: यह देरी डेटाबेस के पॉज़ किए गए स्टेट (cold start) से फिर से शुरू होने के कारण होती है। एक न्यूनतम vCore मान सेट करने से डेटाबेस को पूरी तरह से पॉज़ होने से रोका जा सकता है, जिससे कुछ निरंतर कंप्यूट बिलिंग की लागत पर रेज़्यूमे विलंबता समाप्त हो जाती है।