"डॉक्टर, मैं अपने SQL सर्वर प्रदर्शन को लेकर चिंतित हूं।"
यह उस तरह की बात नहीं थी जैसा आप अधिकांश रोगियों से सुनते हैं। लेकिन फिर, एक सशुल्क पेशेवर के रूप में, मुझे इन सब से निपटने के लिए प्रशिक्षित किया गया है - यहां तक कि एक डेटाबेस व्यवस्थापक होने के कठिन समय में भी।
"सच में? आइए इसे एक्सप्लोर करें, क्या हम?"
"ज़रूर, डॉक्टर। मेरा मतलब है, कभी-कभी यह बहुत भारी लगता है। मैंने सोचा था कि एक बार जब मैं इसके लिए प्रतिबद्ध हो जाऊंगा तो सब कुछ अपने आप ही अपने आप काम कर जाएगा। लेकिन इससे पहले कि मैं इसे जानता, मुझे SQL सर्वर 2012, फिर 2014, फिर 2017 में प्रदर्शन समस्याएँ होने लगीं। मैं SQL सर्वर 2019 के बारे में सोचना भी नहीं चाहता। ”
"समझा। ठीक है, SQL सर्वर के साथ एक अच्छा संबंध केवल अपने आप नहीं होता है। आपको उस पर काम करना होगा। मुझे बताओ, क्या आपने अपने SQL सर्वर प्रदर्शन ट्यूनिंग तकनीकों पर काम किया है?"
"एर, नहीं, डॉक्टर। मैं वास्तव में इनमें से किसी भी तकनीक को नहीं जानता।"
"चिंता मत करो। हम उन पर काम कर सकते हैं। आपका SQL सर्वर शायद उपेक्षित महसूस कर रहा है। आपको यह सुनिश्चित करने के लिए इस पर नज़र रखनी होगी कि आप खेल से आगे रह रहे हैं। यह SQL सर्वर निगरानी लेता है।"
"निगरानी? आप यह कैसे करते हैं?"
"आपको SQL सर्वर दिखाना होगा जिसकी आपको परवाह है। आपको कुछ मेट्रिक्स पर ध्यान देना होगा। हम उस पर भी काम कर सकते हैं।"
"ठीक है, डॉक्टर। आप जो भी कहते हैं। मैं इस समय कुछ भी आजमाने को तैयार हूं। हालात पहले से ज्यादा खराब नहीं हो सकते थे।"
"अच्छा तो। शुरू करते हैं।"
SQL सर्वर प्रदर्शन मेट्रिक्स — बहुत सारे मूविंग पार्ट्स
रोगी सही था:आपके SQL सर्वर के प्रदर्शन की निगरानी करना भारी पड़ सकता है। एक बार इसके उठने और चलने के बाद आप इस पर ध्यान देना बंद नहीं कर सकते। आपको यह दिखाना जारी रखना होगा कि आप परवाह करते हैं।
SQL सर्वर में बहुत सारे मूविंग पार्ट होते हैं जो लगातार मेट्रिक्स जेनरेट कर रहे हैं। यह जानना कि किन लोगों को देखना है और फिर वास्तव में अपने व्यस्त दिन में से समय निकालकर उनकी निगरानी करना एक DBA के लिए बहुत काम का हो सकता है।
इसलिए मैं रोगी के साथ SQL सर्वर प्रदर्शन मेट्रिक्स के कुछ मुख्य क्षेत्रों से गुजरा।
सूचकांक
जब आप SQL सर्वर के साथ प्रदर्शन समस्याओं का सामना कर रहे हों, तो यह देखने वाले पहले स्थानों में से एक है अनुक्रमणिका। आपका डेटा हमेशा बढ़ रहा है, इसलिए आपकी अनुक्रमणिका भी हमेशा बढ़ रही है। लेकिन वे विखंडन और पृष्ठ विभाजन जैसी स्थितियों के अधीन हैं जो प्रश्नों की प्रतिक्रिया को धीमा कर सकते हैं।
डेटाबेस में दिन-ब-दिन क्या हो रहा है? उपयोगकर्ता रिकॉर्ड बना रहे हैं, संपादित कर रहे हैं और हटा रहे हैं। अनुक्रमणिका उस स्थान पर बनी रहती है जहां रिकॉर्ड के सभी टुकड़े हैं, लेकिन समय के साथ, अनुक्रमणिका विखंडन प्रदर्शन को बाधित करता है।
फिर सूचकांक भरण कारक है, एक पैरामीटर जिसे आप SQL सर्वर में पृष्ठ विभाजन की संख्या को नियंत्रित करने और क्वेरी दक्षता बढ़ाने के लिए कॉन्फ़िगर कर सकते हैं। लेकिन अधिक और कम पृष्ठ विभाजन के बीच संतुलन अन्य तरीकों से प्रदर्शन को प्रभावित करता है।
भरण कारक . में मीट्रिक देखना , I/O और विखंडन अपनी उंगलियों को SQL सर्वर इंडेक्स स्वास्थ्य की नब्ज पर रखने का एक अच्छा तरीका है।
बफर कैश
आइए इसे सरल बनाते हैं:डिस्क, धीमा; बफर कैश, तेज। बफर कैश हाल ही में उपयोग किए गए डेटाबेस पृष्ठों की एक इन-मेमोरी कॉपी है। यदि SQL सर्वर को वह नहीं मिलता है जिसकी वह तलाश कर रहा है, तो उसे इसके लिए डिस्क पर जाना होगा, जो प्रदर्शन को धीमा कर देता है।
SQL सर्वर आपको बफ़र कैश को आवंटित करने के लिए सिस्टम मेमोरी की मात्रा निर्दिष्ट करने देता है, लेकिन आप अन्य कार्यों के लिए छोड़ी गई मेमोरी के विरुद्ध व्यापार करते हैं। आपका लक्ष्य अन्य क्षेत्रों में SQL सर्वर के प्रदर्शन को बाधित किए बिना जितना हो सके उतना आवंटित करना है।
पृष्ठ जीवन प्रत्याशा भी महत्वपूर्ण है, डेटाबेस से जानकारी का एक पृष्ठ फिर से एक्सेस किए बिना बफर में खर्च करता है। SQL सर्वर हाल ही में उपयोग किए गए लोगों के लिए जगह बनाने के लिए लगातार बफर कैश से पृष्ठों को निकाल रहा है। लेकिन जितने कम उपयोगी पृष्ठ उसे वहां मिलते हैं, उतना ही उसे डिस्क से पढ़ना पड़ता है, जो प्रदर्शन को धीमा कर देता है।
पृष्ठ जीवन प्रत्याशा . जैसे मीट्रिक और बफ़र कैश में सफल हिट का अनुपात पृष्ठों को कम बार बेदखल करने या संचय के आकार को बढ़ाने के बारे में निर्णय लेने में आपकी सहायता करता है।
टी-एसक्यूएल
SQL सर्वर T-SQL नामक एक क्वेरी भाषा का उपयोग करता है। SQL कथनों को तदर्थ चलाने के बजाय, SQL सर्वर उन्हें एक निष्पादन योजना के रूप में संकलित करके और उन्हें कैशिंग करके प्रदर्शन में सुधार करने का प्रयास करता है। यह संकलन की आवृत्ति को कम करने और निष्पादन योजनाओं का यथासंभव पुन:उपयोग करने का भी प्रयास करता है। यदि यह निष्पादन योजना का पुन:उपयोग नहीं कर सकता है - कहते हैं, क्योंकि डेटाबेस बहुत अधिक बदल गया है - तो यह योजना को पुन:संकलित करेगा। जितना संभव हो सके एसक्यूएल स्टेटमेंट की संख्या को फिर से संकलित करना सबसे अच्छा है, क्योंकि यह प्रक्रिया बड़ी मात्रा में सीपीयू की खपत कर सकती है और प्रदर्शन को कम कर सकती है।
संकलन और पुन:संकलन की आवश्यकता अच्छी कोडिंग प्रथाओं का एक कार्य है, जैसे संग्रहीत प्रक्रियाओं का उपयोग करना और प्रश्नों को पैरामीटर करना। DBA जो SQL संकलन की दर जैसे मीट्रिक की निगरानी करते हैं और SQL पुन:संकलन प्रदर्शन में सुधार के लिए SQL सर्वर क्वेरी संकेतों को संशोधित कर सकता है।
लॉक, प्रतीक्षा और अवरुद्ध प्रक्रियाएं
यह पता लगाना निराशाजनक है कि कोई अन्य व्यक्ति उसी समय कुछ संशोधित कर रहा है जब आप हैं। इसलिए कई रसोइयों को रसोई से बाहर रखने के लिए डेटाबेस स्वचालित रूप से पंक्तियों और तालिकाओं जैसी चीजों को लॉक कर देता है। उस सुरक्षा के लिए ट्रेड-ऑफ, निश्चित रूप से यह है कि अन्य सभी उपयोगकर्ताओं को संसाधन के अनलॉक होने तक प्रतीक्षा करनी चाहिए। और, यह सुनिश्चित करना कठिन है कि लॉकिंग केवल उसी स्तर पर हो रही है जिसकी उसे आवश्यकता है।
मेट्रिक्स के साथ जो दिखाता है कि कितनी बार और कितनी व्यापक रूप से ताले अन्य परिचालनों को प्रभावित कर रहे हैं, डीबीए लेनदेन को और अधिक तेज़ी से संसाधित करने के लिए अधिक भौतिक सिस्टम संसाधनों की आवश्यकता निर्धारित कर सकते हैं। यह भी हो सकता है कि SQL सर्वर अनावश्यक रूप से निम्न स्तर पर लॉक हो रहा हो। लॉक प्रतीक्षा . की आवृत्ति और, मोटे तौर पर, अवरुद्ध प्रक्रियाओं की संख्या बाधाओं का पता लगाने में मदद कर सकता है।
SQL प्रदर्शन ट्यूनिंग के साथ बाधाओं को दूर करें
"भगवान, डॉक्टर, आप सभी चलती भागों के बारे में सही हैं। अब मैं देखता हूं कि मैं SQL सर्वर को कैसे स्थापित नहीं कर सकता, इसे सेट कर सकता हूं और इसे भूल सकता हूं। मुझे रिश्ते को पोषित करने की जरूरत है। लेकिन यह सब अभी भी भारी लगता है। मैं इतनी सारी अलग-अलग चीजों को सीधे कैसे रखूं और खेल से आगे रहूं?"
"यह सबसे अच्छा हिस्सा है। ऐसे उपकरण हैं जो आपके SQL सर्वर के प्रदर्शन में मदद कर सकते हैं। आपको इसे अकेले नहीं जाना है।"
"वाह! यह आश्वस्त करने वाला है। मुझे इसके बारे में पता नहीं था।"
"ये सही है। उपकरण आपके SQL सर्वर के प्रदर्शन की निगरानी करते हैं और इन सभी मीट्रिक की रिपोर्ट करते हैं ताकि आप अपनी ट्यूनिंग तकनीकों को लागू कर सकें और बाधाओं को दूर कर सकें।"
"वास्तव में?"
"ज़रूर। और हम उन अधिकारों पर काम कर सकते हैं - ओह, मेरे, हमारे पास इस सप्ताह के लिए समय नहीं है। कृपया मेरे रिसेप्शनिस्ट के साथ अपॉइंटमेंट लें और हम अगले सप्ताह उठा लेंगे।"
"लड़के, वो चार घंटे तेजी से बीत गए, डॉक्टर! जब आप विखंडन, संसाधन उपयोग . के आसपास प्रदर्शन समस्याओं का समाधान कर रहे होते हैं तो समय निश्चित रूप से निकल जाता है और बफर कैश हिट अनुपात , है ना?"
"हां, और मुझे यकीन है कि एक बार जब आप अपने SQL सर्वर के साथ उन मुद्दों के बारे में खुलकर संवाद करेंगे, तो आपकी सभी प्रदर्शन समस्याएं इतिहास बन जाएंगी।"
हमारे सत्र से प्रसन्न होकर, रोगी चला गया। अगली बार, हम SQL सर्वर प्रदर्शन बाधाओं की निगरानी पर काम करेंगे। मैं इसके बारे में ब्लॉग करूँगा, इसलिए नज़र रखें।
इस बीच, मुझ पर विश्वास करो। मैं एक सशुल्क पेशेवर हूं, और मैं आपको अपने डेटाबेस के साथ अपने संबंधों में इन चीजों को आजमाने के लिए प्रोत्साहित करता हूं। अपने SQL सर्वर को वांछित महसूस कराएं। इसके प्रदर्शन मेट्रिक्स पर ध्यान दें।
कोशिश करने में कभी देर नहीं होती।