परिचय
यह आलेख 24/7 सूचना प्रणाली के डेटाबेस के साथ मुख्य अनुसूचित रखरखाव की एक संक्षिप्त समीक्षा है जिसमें डाउनटाइम नहीं है, साथ ही एमएस एसक्यूएल सर्वर में उनके निष्पादन के दृष्टिकोण भी हैं।
लेख पर किसी भी टिप्पणी और अपडेट की बहुत सराहना की जाती है।
अनुसूचित रखरखाव
निम्नलिखित शेड्यूल्ड रखरखाव है जिसे मैं इंगित करना चाहूंगा:
- बिना पुनर्स्थापित किए आगे सत्यापन के साथ शेड्यूल किए गए बैकअप
- बैकअप के प्रदर्शन को सत्यापित करने के लिए उन्हें पुनर्स्थापित करना शेड्यूल किया गया
- डेटा स्टोरेज डिवाइस का विश्लेषण जिसमें सिस्टम और सभी आवश्यक डेटाबेस शामिल हैं
- आवश्यक सेवाओं का निर्धारित परीक्षण
- सिस्टम प्रदर्शन का शेड्यूल्ड ऑप्टिमाइज़ेशन
- डेटा अखंडता का अनुसूचित रखरखाव
- डेटा सत्यापन का शेड्यूल्ड रखरखाव
पहले तीन बिंदु सबसे महत्वपूर्ण हैं, क्योंकि वे विभिन्न विफलताओं के बाद एक प्रणाली को बहाल करते हैं। हालांकि, मैं कम से कम तीन बिंदुओं को भी निष्पादित करने की अनुशंसा करता हूं, ताकि उपयोगकर्ता आराम से काम कर सकें (इस प्रकार, सभी प्रश्नों को तेजी से निष्पादित किया जाना चाहिए) और ताकि सभी रिपोर्टिंग सिस्टम में डेटा को मान्य किया जा सके।
अनुसूचित रखरखाव को स्वचालित करने के लिए, इसके भागों को एजेंट या विंडोज शेड्यूलर में व्यवस्थित करना संभव है।
छठा बिंदु CHECKDB कमांड पर आधारित है।
सातवां बिंदु सूचना प्रणाली में उपयोग किए जाने वाले डोमेन क्षेत्र की ओर लागू किया गया है।
मैं पहले पांच बिंदुओं के बारे में विस्तार से बात करने जा रहा हूं।
बिना पुनर्स्थापित किए आगे सत्यापन के साथ शेड्यूल किए गए बैकअप
चूंकि इस विषय पर बहुत सारे लेख हैं, इसलिए यह ध्यान दिया जाना चाहिए कि मुख्य सर्वर के बजाय बैकअप सर्वर पर इस अनुसूचित रखरखाव को नियमित रूप से निष्पादित करना आवश्यक है। इस बैकअप सर्वर में अप-टू-डेट डेटा होना चाहिए (उदाहरण के लिए, जो प्रतिकृति के साथ मिला था)। इसके अलावा, आपको MS SQL सर्वर के प्रत्येक इंस्टेंस पर सभी सिस्टम डेटाबेस (tempdb को छोड़कर) का बैकअप लेना होगा।
जब बैकअप विफल हो जाता है, या बैकअप स्कैन किसी समस्या की पहचान करता है, तो इस जानकारी को व्यवस्थापकों को रिपोर्ट करना आवश्यक है। उदाहरण के लिए, आप उन्हें ईमेल कर सकते हैं।
बैकअप के लिए एक रणनीति निर्धारित करना महत्वपूर्ण है, जो निम्नलिखित प्रश्नों का उत्तर देगा:
- कितनी बार और कब हमें डेटा (पूर्ण, अंतर और लेन-देन लॉग) का बैकअप लेना चाहिए?
- हमें कब तक और कब बैकअप हटाना चाहिए?
बैकअप के प्रदर्शन को सत्यापित करने के लिए उन्हें पुनर्स्थापित करना शेड्यूल किया गया
मैं इस प्रक्रिया को तृतीय-पक्ष उपयोगिताओं वाले बैकअप सर्वर या RESTORE . के साथ निष्पादित करने की अनुशंसा करता हूं आदेश।
जब बैकअप पुनर्स्थापित करना विफल हो जाता है, तो इस जानकारी को व्यवस्थापकों को रिपोर्ट करना आवश्यक है। उदाहरण के लिए, आप उन्हें ईमेल कर सकते हैं।
इसके अलावा, सिस्टम डेटाबेस के बैकअप को पुनर्स्थापित करना आवश्यक है। ऐसा करने के लिए, आपको उन्हें एक सामान्य उपयोगकर्ता डेटाबेस के रूप में एक ऐसे नाम के साथ पुनर्स्थापित करना होगा जो सिस्टम डेटाबेस के नामों से भिन्न हो।
डेटा संग्रहण उपकरणों का विश्लेषण जिसमें सिस्टम और सभी आवश्यक डेटाबेस शामिल हैं
आपको यह विश्लेषण करने की आवश्यकता है कि प्रत्येक डेटाबेस कितना स्थान लेता है, फ़ाइल का आकार कैसे बदलता है, और संपूर्ण संग्रहण उपकरण में खाली स्थान का आकार कैसे बदलता है। उदाहरण के लिए, आप इस कार्य को आंशिक रूप से डेटाबेस फ़ाइलों और MS SQL सर्वर में ऑपरेटिंग सिस्टम के लॉजिकल ड्राइव के बारे में स्वचालित डेटा संग्रह के साथ कर सकते हैं।
आप यह जांच हर दिन कर सकते हैं और फिर परिणाम भेज सकते हैं। हमेशा की तरह, आप उन्हें ईमेल पर भेज सकते हैं।
सिस्टम डेटाबेस की निगरानी करना भी आवश्यक है ताकि आप सुनिश्चित करें कि सब कुछ सही ढंग से काम करता है।
इसके अलावा, यह जांचने के लिए भंडारण उपकरणों का परीक्षण करना महत्वपूर्ण है कि क्या कोई मूल्यह्रास या खराब क्षेत्र हैं।
ध्यान दें कि किसी डिवाइस का परीक्षण करते समय ऑपरेशन से बाहर होना चाहिए और सभी डेटा को किसी अन्य डिवाइस पर कॉपी किया जाना चाहिए क्योंकि परीक्षण डिवाइस को अत्यधिक लोड करता है।
यह कार्य सख्ती से सिस्टम प्रशासक कर्तव्यों से संबंधित है इसलिए हम इसे एक तरफ रखेंगे। मामले पर पूर्ण नियंत्रण लेने के लिए, आपको ईमेल रिपोर्ट वितरण को स्वचालित करने की आवश्यकता है।
मैं इस परीक्षण को साल में दो बार करने की सलाह दूंगा।
आवश्यक सेवाओं का निर्धारित परीक्षण
सेवा डाउनटाइम एक बुरा अभ्यास है। इसलिए, किसी भी विफलता के मामले में एक बैकअप सर्वर कार्रवाई में आ जाएगा। फिर भी, समय-समय पर लॉग की जांच करना आवश्यक है। इसके अलावा, आप एक ईमेल भेजकर किसी व्यवस्थापक को आगे की सूचना के साथ स्वचालित डेटा संग्रह के बारे में भी सोच सकते हैं।
MS SQL सर्वर में पूर्ण किए गए कार्यों के बारे में स्वचालित डेटा संग्रह के साथ SQL सर्वर एजेंट या Windows शेड्यूलर के कार्यों की जाँच करना आवश्यक है।
सिस्टम प्रदर्शन का शेड्यूल्ड ऑप्टिमाइज़ेशन
इसमें निम्नलिखित पहलू शामिल हैं:
- MS SQL सर्वर डेटाबेस में अनुक्रमणिका डीफ़्रेग्मेंटेशन को स्वचालित करना
- MS SQL सर्वर में डेटाबेस योजनाओं के परिवर्तनों के बारे में डेटा संग्रह को स्वचालित करना। आप बैकअप को पुनर्स्थापित कर सकते हैं और परिवर्तनों की तुलना कर सकते हैं, उदाहरण के लिए, dbForge का उपयोग करके
- MS SQL सर्वर में अटकी हुई प्रक्रियाओं की स्वचालित सफाई
- प्रक्रिया कैश की सफाई। यहां आपको यह निर्धारित करने की आवश्यकता है कि कब और क्या साफ किया जाना चाहिए
- प्रदर्शन संकेतक लागू करना
- क्लस्टर इंडेक्स का विकास और संशोधन करना
इसके अतिरिक्त, मेरा सुझाव है कि AUTO_CLOSE . को बंद कर दें सुविधा।
कभी-कभी, विभिन्न कारणों से, एक अनुकूलक एक क्वेरी को समानांतर करता है, जो हमेशा इष्टतम नहीं होता है।
इस प्रकार, कुछ सिफारिशें हैं जिन्हें आपको ध्यान में रखना चाहिए:
- यदि आपको अधिक डेटा मिलता है, तो समानता छोड़ दें।
- यदि आपको कुछ डेटा मिलता है, तो समानता का उपयोग न करें।
समानांतरवाद के लिए जिम्मेदार SQL सर्वर इंस्टेंस सेटिंग्स में दो पैरामीटर हैं:
- समानांतरता की अधिकतम डिग्री। समांतरता को बंद करने के लिए, "1" को मान के रूप में सेट करें, जिसका अर्थ है कि केवल एक प्रोसेसर एक कोड निष्पादित करेगा।
- समानता के लिए लागत सीमा। इसे डिफ़ॉल्ट रूप से सेट किया जाना चाहिए।
दो मुख्य कतारें हैं:
- CPU समय के लिए एक कतार (QCPU कतार)। यह तब होता है जब कोई क्वेरी सक्षम की गई हो और प्रोसेसर द्वारा इसे निष्पादित करने की प्रतीक्षा कर रही हो।
- संसाधनों के लिए एक कतार (क्यूआर कतार)। यह तब होता है जब कोई क्वेरी प्रक्रिया को निष्पादित करने के लिए संसाधनों के अनबाउंड होने की प्रतीक्षा कर रही होती है।
निम्न सूत्र क्वेरी निष्पादन (T) का वर्णन करता है:
टी=टीपी+टीक्यूआर+टीसीपीयू+टीक्यूसीपीयू, जहां:
- टीपी योजना के लिए समय संकलित कर रहा है
- TQR संसाधनों के लिए कतार का समय है (QR कतार)
- TQCPU संसाधनों के अनबाउंड होने के लिए कतार का समय है (QCPU कतार)
- TCPU क्वेरी निष्पादित करने का समय है
sys.dm_exec_query_stats सिस्टम दृश्य में:
- total_worket_time =TP+TCPU+TQCPU
- total_elapsed_time =TQR+TCPU
अंतर्निहित टूल क्वेरी निष्पादन समय का सटीक आकलन करने की अनुमति नहीं देते हैं।
ज्यादातर मामलों में, कुल_बीता हुआ_समय आपको वह समय प्रदान करता है जो क्वेरी निष्पादन समय के करीब है।
आप ट्रेस का उपयोग करके क्वेरी निष्पादन समय को अधिक सटीक रूप से निर्धारित कर सकते हैं। वैकल्पिक रूप से, आप क्वेरी प्रारंभ और समाप्ति समय लॉग कर सकते हैं। निशान से सावधान रहें क्योंकि वे सिस्टम को महत्वपूर्ण रूप से लोड करते हैं। इस प्रकार, इसे बैकअप सर्वर पर निष्पादित करना और मुख्य सर्वर से डेटा एकत्र करना बेहतर है। इस मामले में, केवल नेटवर्क लोड किया जाएगा।
समानांतर करते समय, SQL सर्वर एक क्वेरी के लिए N प्रक्रियाओं को आवंटित करता है (संस्करण स्टैंडआर्ट n<=4) में। प्रत्येक प्रक्रिया को एक क्वेरी निष्पादित करने के लिए CPU समय की आवश्यकता होती है (प्रत्येक कोर पर एक प्रक्रिया हमेशा निष्पादित नहीं होती है)।
आपके पास जितनी अधिक प्रक्रियाएं होंगी, उतनी ही अधिक संभावना है कि कुछ को दूसरों द्वारा प्रतिस्थापित किया जाएगा, जिससे TQCPU में वृद्धि होगी।
निम्नलिखित मामलों में समानांतर होने पर किसी क्वेरी को निष्पादित करने में अधिक समय लग सकता है:
- लो डिस्क सब-सिस्टम थ्रूपुट। इस मामले में, क्वेरी अपघटन में अधिक समय लगता है।
- डेटा प्रक्रिया के लिए अवरुद्ध किया जा सकता है।
- विधेय के लिए कोई अनुक्रमणिका नहीं है, जो एक तालिका स्कैन की ओर ले जाती है।
टिप्पणियां:
आपको सर्वर पर समानांतर क्वेरी को अक्षम करने की आवश्यकता है जहां विशाल चयन करने की कोई आवश्यकता नहीं है (total_worket_time को कम किया जाना चाहिए) टीसीपीयू और टीक्यूसीपीयू की संभावित कमी के कारण)। ऐसा करने के लिए, आपको केवल एक प्रोसेसर के काम करने के लिए समानांतरवाद सुविधा की अधिकतम डिग्री को '1' में सेट करना होगा।
इसके अलावा, आप एक सिस्टम बनाने के लिए अन्य ढांचे का उपयोग कर सकते हैं जो डेटाबेस के उच्च गति प्रदर्शन को निर्धारित करता है। . यह समझना महत्वपूर्ण है कि ये ढांचे कैसे काम करते हैं और पुनर्प्राप्त संख्याओं की व्याख्या कैसे करें।
जहां तक अनुक्रमणिका के विकास और संशोधन का संबंध है, अर्थात् संकुल अनुक्रमणिका, मुख्य बिंदु यह समझना है कि अनुक्रमणिका का तर्क कैसे सेट किया जाता है और यह कैसे कार्य करता है।
ध्यान रखें कि प्राथमिक और संकुल कुंजियों का अर्थ एक नहीं है:
एक प्राथमिक कुंजी एक स्तंभ या स्तंभों का एक समूह है, जो तालिका में एक रिकॉर्ड को अद्वितीय बनाता है। प्राथमिक कुंजी के लिए, आप या तो एक अद्वितीय क्लस्टर या गैर-संकुल अनुक्रमणिका बना सकते हैं। प्राथमिक कुंजी का उपयोग अन्य तालिकाओं में डेटा अखंडता प्रदान करने के लिए विदेशी कुंजी के रूप में किया जाता है।
एक संकुलित अनुक्रमणिका एक बी-पेड़ या इसका संशोधन है। पत्तियों में डेटा ही होता है जबकि नोड्स में इंडेक्स की जानकारी होती है। इसके अलावा, एक संकुल सूचकांक गैर-अद्वितीय भी हो सकता है। फिर भी, मैं इसे अद्वितीय होने की सलाह देता हूं।
मैं याद दिलाना चाहता हूं कि बी-पेड़ एक संरचना है जो क्लस्टर इंडेक्स द्वारा फ़िल्टर किए गए क्रम में डेटा संग्रहीत करता है। इस प्रकार, क्लस्टर इंडेक्स के रूप में चयनित फ़ील्ड को अवरोही या आरोही क्रम में समूहित करना महत्वपूर्ण है। क्लस्टर्ड इंडेक्स के लिए, आप पूर्णांक (पहचान), साथ ही डेटा और समय के कॉलम का उपयोग कर सकते हैं। फिर भी, विशिष्ट पहचानकर्ता जैसे कॉलम उपयुक्त नहीं हैं क्योंकि बाद वाले बी-ट्री के नियमित पुनर्गठन की ओर ले जाएंगे, जिससे स्टोरेज डिवाइस पर रीडिंग और रिकॉर्ड की मात्रा बढ़ जाएगी जहां डेटाबेस स्थित है।
इसके अतिरिक्त, आपको यह सुनिश्चित करने की आवश्यकता है कि अनुक्रमणिका का उपयोग sys.dm_db_index_usage_stats सिस्टम दृश्य के साथ किया जाता है।
पी.एस. यह जांचना आवश्यक है कि बैकअप सर्वर पर डेटा अप-टू-डेट है या नहीं, साथ ही एक सिस्टम की जांच करें, जो इस डेटा को सिंक्रनाइज़ करता है (उदाहरण के लिए, प्रतिकृतियां)।
यह भी पढ़ें:
MS SQL सर्वर डेटाबेस में स्वचालित अनुक्रमणिका डीफ़्रेग्मेंटेशन
MS SQL सर्वर में डेटाबेस स्कीमा परिवर्तन का स्वचालित डेटा संग्रह
MS SQL सर्वर में अटकी हुई प्रक्रियाओं का स्वचालित विलोपन
MS SQL सर्वर में लंबे समय तक चलने वाली क्वेरी का समस्या निवारण
एक प्रदर्शन संकेतक लागू करना