SQL सर्वर में रखरखाव योजना हमें कार्यों को व्यवस्थित करने, कॉन्फ़िगर करने और शेड्यूल करने का एक आसान तरीका प्रदान करती है जो यह सुनिश्चित करती है कि डेटाबेस इंजन और उसमें होस्ट किए गए डेटाबेस आकार में रखे गए हैं।
रखरखाव योजनाएँ डेटाबेस व्यवस्थापक को अनुक्रमण, सांख्यिकी अद्यतन, बैकअप, लॉग क्लीनअप, और अन्य जैसे प्रमुख कार्यों को कॉन्फ़िगर करने का अवसर प्रदान करती हैं। पिछले लेख में हमने पहले ही चर्चा की थी कि डेटाबेस स्थिरता जाँच करने के लिए एक बुनियादी रखरखाव योजना कैसे बनाई जाए। इस लेख में, हम एक डेटाबेस उदाहरण के लिए एक रखरखाव योजना बनाने का पूर्वाभ्यास करेंगे जो छोटे डेटाबेस को होस्ट कर रहा है। पूर्वाभ्यास के दौरान, मैं एक उदाहरण के संदर्भ में प्रत्येक चरण में किए गए प्रमुख विकल्पों को छोटी की मामूली बड़ी संख्या के साथ समझाऊंगा। डेटाबेस। विचार इन डेटाबेसों के रखरखाव को एक-एक करके किए बिना कॉन्फ़िगर करना है। छोटे डेटाबेस पर ध्यान केंद्रित करने का उद्देश्य रखरखाव कार्यों से जुड़े प्रदर्शन ओवरहेड से बचना है।
साप्ताहिक कार्यों के लिए रखरखाव योजना
चित्र 1:रखरखाव योजना विज़ार्ड लॉन्च करें
हम ऑब्जेक्ट एक्सप्लोरर> [इंस्टेंस नाम]> प्रबंधन> रखरखाव योजनाओं से रखरखाव योजना विज़ार्ड लॉन्च करते हैं (चित्र 1 देखें)। विज़ार्ड का पहला पृष्ठ हमें उन कार्यों का अवलोकन देता है जिन्हें कॉन्फ़िगर किया जा सकता है। जबकि कोड और कार्य शेड्यूलिंग का उपयोग करके इन कार्यों को पूरा करने के अन्य तरीके हैं, रखरखाव योजना विज़ार्ड एक उदाहरण पर होस्ट किए गए बड़ी संख्या में डेटाबेस के साथ काम करते समय इसे पूरा करना काफी आसान बनाता है।
चित्र 2:रखरखाव योजना विज़ार्ड
चित्र 3 में, हम देखते हैं कि SQL सर्वर हमारे लिए रखरखाव योजना का नाम और वर्णन करने के लिए फ़ील्ड को उजागर कर रहा है। योजना का विवरण दर्ज करना दस्तावेज़ीकरण उद्देश्यों के लिए समझ में आता है। एक नई कंपनी में एक नया SQL सर्वर इंस्टेंस लेने की कल्पना करें। यह उपयोगी होगा यदि आप ऑब्जेक्ट्स में SQL सर्वर ऑब्जेक्ट्स का विवरण पाते हैं। आपको दूसरों के लिए भी ऐसा ही करना चाहिए। कृपया ध्यान दें कि मैंने जो विवरण दिया है वह केवल बिंदु को स्पष्ट करने के लिए है। उत्पादन परिवेश में अधिक विस्तृत विवरण वांछनीय होगा।
चित्र 3:रखरखाव योजना का नामकरण
ध्यान दें कि चित्र 3 में हमारे पास यह चुनने का विकल्प है कि क्या हम सभी कार्यों के लिए एकल शेड्यूल का उपयोग करना चाहते हैं या प्रत्येक कार्य के लिए अलग शेड्यूल का उपयोग करना चाहते हैं। मैंने कार्यों को चौंका देने के लचीलेपन के लिए अलग-अलग शेड्यूल का उपयोग करना चुना है। अत्यधिक सर्वर संसाधनों के जोखिम से बचने के लिए हम नहीं चाहेंगे कि बहुत अधिक रखरखाव कार्य एक साथ या एक के बाद एक लंबे समय तक चले। इस समय आप जो निर्णय लेते हैं वह आपके लिए उपलब्ध संसाधनों की क्षमता और उपलब्ध रखरखाव विंडो पर भी निर्भर हो सकता है। कुछ लोगों के पास पर्याप्त क्षमता होती है और वे प्रत्येक रन के दौरान कार्य को शीघ्रता से पूरा करना चाहेंगे। इस लेख में शामिल परिदृश्य में, हम यह मान रहे हैं कि विचाराधीन उदाहरण सप्ताहांत के दौरान उपयोग नहीं किया जाता है।
चित्र 4 में, हम उन कार्यों को चुनते हैं जिन्हें हम निष्पादित करना चाहते हैं। SQL सर्वर के बारे में महान चीजों में से एक यह है कि प्रत्येक कार्य को विंडो के नीचे वर्णित किया गया है। यह "विंडोज़" पर काम करते हुए भी आप क्या कर रहे हैं, यह समझने के लिए डीबीए के रूप में काम करते समय भुगतान करता है। मेरे अनुभव में, कई "व्यवस्थापकों" को "अगला, अगला, अगला" पर क्लिक करने की आदत है क्योंकि वे कार्यक्षमता को काम करने की जल्दी में हैं। लेकिन अगले "अगला" के प्रभाव को समझने के लिए समय निकालने से यह सुनिश्चित करने में मदद मिलती है कि आप कुछ ऐसा कर रहे हैं जो मूल्य जोड़ देगा, नई समस्याएं पैदा नहीं करेगा।
चित्र 4:रखरखाव कार्य चुनना
हमारे द्वारा चुने गए कार्यों का वर्णन इस प्रकार है:
डेटाबेस की अखंडता की जांच करें कार्य डेटाबेस के भीतर डेटा और अनुक्रमणिका पृष्ठों की आंतरिक संगतता जाँच करता है।
सूचकांक पुनर्व्यवस्थित करें टेबल और व्यू पर टास्क डीफ़्रैग्मेन्ट्स और कॉम्पेक्ट क्लस्टर्ड और नॉन-क्लस्टर इंडेक्स। यह अनुक्रमणिका-स्कैनिंग प्रदर्शन में सुधार करेगा।
सूचकांक का पुनर्निर्माण करें कार्य अनुक्रमणिका का पुनर्निर्माण करके डेटा और अनुक्रमणिका पृष्ठों पर डेटा को पुनर्व्यवस्थित करता है। यह सूचकांक स्कैन और तलाश के प्रदर्शन में सुधार करता है। यह कार्य अनुक्रमणिका पृष्ठों पर डेटा के वितरण और खाली स्थान को भी अनुकूलित करता है, जिससे भविष्य में तेजी से विकास होता है।
आंकड़े अपडेट करें कार्य सुनिश्चित करता है कि क्वेरी ऑप्टिमाइज़र के पास तालिकाओं में डेटा मानों के वितरण के बारे में अद्यतित जानकारी है। यह ऑप्टिमाइज़र को डेटा एक्सेस रणनीतियों के बारे में बेहतर निर्णय लेने की अनुमति देता है।
इतिहास की सफाई कार्य बैकअप और पुनर्स्थापना, SQL सर्वर एजेंट और रखरखाव योजना संचालन के बारे में ऐतिहासिक डेटा हटा देता है। यह विज़ार्ड आपको हटाए जाने वाले डेटा के प्रकार और आयु को निर्दिष्ट करने की अनुमति देता है।
बैक अप डेटाबेस (पूर्ण) कार्य आपको स्रोत डेटाबेस, गंतव्य फ़ाइलें या टेप निर्दिष्ट करने और पूर्ण बैकअप के लिए विकल्पों को अधिलेखित करने की अनुमति देता है।
रखरखाव सफाई कार्य रखरखाव योजना को क्रियान्वित करने से बची हुई फ़ाइलों को हटा देता है।
चित्र 5 दिखाता है कि हम उस क्रम का चयन करते हैं जिसमें इन कार्यों को निष्पादित किया जाता है। यह कुछ कारणों से महत्वपूर्ण है। उदाहरण के लिए, इंडेक्स रीबिल्ड के बाद इंडेक्स स्टैटिस्टिक्स अपडेट करने का कोई मतलब नहीं है क्योंकि इंडेक्स रीबिल्ड SQL सर्वर में इंडेक्स स्टैटिस्टिक्स अपडेट भी करता है। हम लेख में बाद में देखेंगे कि हमने जो आदेश चुना है उसे देखते हुए हम इसे कैसे संभालते हैं। एक और संभावित विचार यह है कि आप यह तय कर सकते हैं कि कुछ प्रकार के रखरखाव के साथ आगे बढ़ने से पहले बैकअप करना अधिक समझदारी है।
चित्र 5:कार्यों का क्रम
चित्र 6 में, हम चुनते हैं कि हम पहले रखरखाव कार्य को किस डेटाबेस पर लागू करना चाहते हैं। हमें इसे बाद के प्रत्येक कार्य के लिए भी करना है। यह इस मायने में महत्वपूर्ण है कि कुछ डेटाबेस को इस तरह के संचालन से छूट देने की आवश्यकता हो सकती है। उदाहरण के लिए, जहां आपके पास एक ही उदाहरण में बहुत बड़े डेटाबेस (VLDBs) और बहुत छोटे डेटाबेस का मिश्रण है (स्वयं एक बुरा विचार), आपको VLDB को एकमुश्त ब्लाइंड इंडेक्स पुनर्निर्माण से बाहर करने की आवश्यकता हो सकती है। ऐसे मामले में, आपको उस वीएलडीबी में मुख्य तालिकाओं की पहचान करने की आवश्यकता है और मुख्य तालिकाओं पर पुनर्निर्माण और अन्य गहन रखरखाव कार्यों पर ध्यान केंद्रित करना होगा। इस उदाहरण में, मैंने सिस्टम डेटाबेस को बाहर रखा है क्योंकि मैं सावधानीपूर्वक उनके लिए अलग से रखरखाव की योजना बना सकता हूं। मेरा मानना है कि सिस्टम डेटाबेस को अलग से संभालना अधिक सुरक्षित है, यह देखते हुए कि उन्हें कोई भी नुकसान पूरे उदाहरण को प्रभावित कर सकता है।
चित्र 6:कार्यक्षेत्र निर्धारित करें
प्रत्येक रखरखाव ऑपरेशन के पास विकल्पों का अपना सेट होता है। चित्र 7 उन विकल्पों को दिखाता है जिन्हें हमें DBCC CHECKDB के लिए तय करना है। मैंने MAXDOP को 2 तक बढ़ाकर डिफ़ॉल्ट सेटिंग्स से थोड़ा विचलित कर दिया है। चित्र 8 में, हम शनिवार और रविवार की रात को 1:00 पूर्वाह्न पर इस कार्य को चलाने के लिए चुनते हैं।
चित्र 7:DBCC विकल्प
चित्र 8:डीबीसीसी अनुसूची
पुनर्गठित अनुक्रमणिका कार्य में विकल्पों का एक विशिष्ट सेट भी होता है। उल्लेख करने योग्य शर्तों का सेट है जो यह निर्धारित करेगा कि एक सूचकांक को पुनर्गठित किया जाना चाहिए या नहीं - 30% विखंडन, 1000+ पृष्ठ गणना, और अंतिम बार अधिकतम 28 दिनों में फिर से उपयोग किया जाता है। यह विंडो हमारे द्वारा किए जा रहे विकल्पों को समझने की आवश्यकता को रेखांकित करती है। इन विकल्पों को सही ढंग से बनाने के लिए, आपको अनुक्रमणिका और अनुक्रमण को उचित सीमा तक समझने की आवश्यकता है। ध्यान दें कि पुनर्निर्माण इंडेक्स टास्क में समान विकल्प बनाने की आवश्यकता होगी। साथ ही, ध्यान दें कि अनुक्रमणिका पुनर्गठन के लिए अनुशंसित विखंडन सीमा वास्तव में 15% है न कि 30%।
चित्र 9:अनुक्रमणिका विकल्पों को पुनर्व्यवस्थित करें
पुनर्निर्माण सूचकांक कार्य सूचकांक पुनर्गठन के लिए कुछ अन्य विकल्प प्रदान करता है। (चित्र 10 देखें)। ध्यान दें कि मैंने TempDB में परिणामों को सॉर्ट करना चुना है। इस विकल्प के प्रभावी होने के लिए, TempDB को उचित रूप से ट्यून करना महत्वपूर्ण है क्योंकि चुनाव का अर्थ है कि सभी डेटाबेस में इस ऑपरेशन के लिए छंटनी TempDB में होगी। इसके अतिरिक्त, हमें इंडेक्स रीबिल्ड के लिए शेड्यूल सेट करना होगा। मैंने इस कार्य के लिए MAXDOP को 2 पर भी सेट किया है।
चित्र 10:अनुक्रमणिका विकल्पों का पुनर्निर्माण करें
हमने पहले उल्लेख किया था कि जब SQL सर्वर में एक इंडेक्स रीबिल्ड को लागू किया जाता है, तो इंडेक्स पर आंकड़े अपडेट भी डिफ़ॉल्ट रूप से लागू होते हैं। इसलिए, जब हम सांख्यिकी अद्यतन कार्य को कॉन्फ़िगर करते हैं, तो हम केवल स्तंभ आंकड़े update को अपडेट करना चुनते हैं (चित्र 11)। यह विंडो हमें पूर्ण स्कैन या नमूना लेने का विकल्प भी देती है। चूंकि संदर्भ छोटे डेटाबेस हैं, इसलिए हम पूर्ण स्कैन विकल्प चुनते हैं। फिर, इसके लिए आँकड़ों की कुछ समझ की आवश्यकता है।
चित्र 11:सांख्यिकी अद्यतन कार्य
जैसा कि चित्र 12 में दिखाया गया है, हम 4 सप्ताह से अधिक पुराने किसी भी डेटा को हटाने के लिए क्लीनअप कार्य को कॉन्फ़िगर करना चुनते हैं।
चित्र 12:इतिहास सफाई कार्य
बैकअप टास्क तीन टैब में कई कॉन्फ़िगरेशन विकल्पों को उजागर करता है! चित्र 13 दिखाता है कि हम इस बैकअप कार्य को उपयोगकर्ता डेटाबेस तक सीमित करना चुनते हैं। हम इसे रविवार को 3:00 AM के लिए शेड्यूल करते हैं, और हम बैकअप गंतव्य को E:\MSSQL\Backup के रूप में चुनने के लिए आगे बढ़ते हैं (चित्र 14 देखें)। तीसरे टैब (चित्र 15) में, हम बैकअप को सत्यापित करने के लिए विकल्प चुनते हैं और एक चेकसम भी करते हैं, इसलिए हम यह सुनिश्चित करने के करीब हैं कि बैकअप विश्वसनीय है।
चित्र 13:बैकअप डेटाबेस कार्य
चित्र 14:बैकअप गंतव्य
चित्र 15:बैकअप विकल्प
अंत में, हम एक कार्य को कॉन्फ़िगर करते हैं जो हमारे रखरखाव योजना लॉग के प्रतिधारण का प्रबंधन करेगा। (चित्र 16)। फिर से, हम 4 सप्ताह से अधिक पुराने किसी भी लॉग रिकॉर्ड को हटाना चुनते हैं। चित्र 17 उन विकल्पों को दिखाता है जिन्हें हम यह सुनिश्चित करने के लिए चुनते हैं कि रखरखाव योजना गतिविधियाँ लॉग हैं और साथ ही डेटाबेस व्यवस्थापक समूह को मेल की गई हैं। बेशक, इस अंतिम विकल्प के काम करने के लिए, हमें डेटाबेस मेल को कॉन्फ़िगर करना होगा और ऑपरेटरों को सही ढंग से सेट करना होगा।
चित्र 16:रखरखाव योजना सफाई कार्य
चित्र 17:रिपोर्ट विकल्प
चित्र 18 और 19 हमारे द्वारा कॉन्फ़िगर किए गए कार्यों और विज़ार्ड के सफल समापन पर प्रतिक्रिया का सारांश दिखाते हैं।
चित्र 18:विकल्पों का सारांश
चित्र 19:विजार्ड समापन
दैनिक कार्यों के लिए रखरखाव योजना
हम अन्य उद्देश्यों के लिए अलग रखरखाव योजनाएँ भी स्थापित कर सकते हैं, जैसे कि केवल व्यवस्थित किया जाना। हमें दैनिक कार्यों के लिए एक अलग योजना स्थापित करने की आवश्यकता नहीं है क्योंकि हम प्रत्येक कार्य के लिए अलग-अलग कार्यक्रम निर्धारित कर सकते हैं। एक अलग योजना स्थापित करने का एक कारण यह हो सकता है कि डेटाबेस के एक अलग सेट पर लक्षित कार्यों के एक अलग सेट का चयन किया जाए (वास्तव में, हम अभी भी मौजूदा योजना में भी ऐसा करने में सक्षम हो सकते हैं)।
निम्नलिखित उदाहरण में, मान लें कि हमारे पास अलग-अलग पुनर्प्राप्ति बिंदु उद्देश्यों वाले एक ही उदाहरण के भीतर बड़े डेटाबेस का एक और सेट है। फिर हमें एक अलग बैकअप रणनीति का उपयोग करने की आवश्यकता है - एक दैनिक डिफरेंशियल बैकअप शेड्यूल और एक घंटे का ट्रांजेक्शन लॉग बैकअप शेड्यूल, साप्ताहिक पूर्ण बैकअप के अलावा 1 घंटे का आरपीओ सुनिश्चित करने के लिए। (आंकड़े 21 और 22 देखें)।
चित्र 20:दैनिक कार्य रखरखाव योजना
चित्र 21:डिफरेंशियल और टॉग बैकअप कार्य
चित्र 22:दैनिक रखरखाव योजना कार्य आदेश
डिफरेंशियल बैकअप के लिए, हम एक दैनिक शेड्यूल चुनते हैं जो प्रतिदिन 2:00 AM पर चालू होता है। (चित्र 23 देखें)। और वही बैकअप विकल्प चुनें जो हमने पहले कॉन्फ़िगर किए गए पूर्ण साप्ताहिक बैकअप के लिए किया था।
चित्र 23:दैनिक रखरखाव योजना अनुसूची
चित्र 24:डिफरेंशियल बैकअप स्थान
चित्र 25:डिफरेंशियल बैकअप विकल्प
दूसरी ओर, हम हर दिन के हर घंटे होने वाले डिफरेंशियल बैकअप को शेड्यूल करना चुनते हैं। हम यह भी सुनिश्चित करते हैं कि प्रत्येक डेटाबेस बैकअप सेट को एक निर्देशिका में संग्रहीत किया जाता है जिसका अपना नाम होता है। शेष विज़ार्ड पिछले पूर्वाभ्यास के समान ही है।
चित्र 26:लेन-देन लॉग बैकअप शेड्यूल
चित्र 27:लेन-देन लॉग बैकअप स्थान
चित्र 28:लेन-देन लॉग बैकअप विकल्प
निष्कर्ष
रखरखाव योजना विज़ार्ड को पूरा करने पर, हम एक रखरखाव योजना और SQL एजेंट नौकरियों के संबंधित सेट के साथ समाप्त होते हैं (चित्र 29 देखें)। अनिवार्य रूप से, रखरखाव योजना एसएसआईएस पैकेजों का एक संग्रह है, और जब आप निर्धारित कार्यों की जांच करते हैं, तो आप पाएंगे कि प्रत्येक उप-योजना कार्य में निष्पादित कार्य चरण एक एसएसआईएस पैकेज है (चित्र 30 देखें)।
बाद के उदाहरण में, हम दिखाएंगे कि हम सालाना उप-योजना नौकरियों को निष्पादित कर सकते हैं। हम रखरखाव योजना के निष्पादन के परिणामों की भी समीक्षा करेंगे और कार्य चरणों को निष्पादित करने से संबंधित त्रुटियों का निवारण करेंगे। हम रखरखाव योजना लॉग की भी जांच करेंगे।
चित्र 29:परिणामी SQL एजेंट नौकरियां
चित्र 30:SSIS पैकेज कार्य चरण