हमें SQL Server में अनुक्रमणिका को फिर से बनाने और पुनर्गठित करने की आवश्यकता क्यों है


28

इंटरनेट पर खोज करने के बाद मुझे इसका कारण नहीं मिला

  1. हमें SQL सर्वर में अनुक्रमित अनुक्रमित पुनर्निर्माण और पुनर्निर्माण की आवश्यकता क्यों है?

  2. जब हम पुनर्निर्माण और पुनर्गठन करते हैं तो आंतरिक रूप से क्या होता है?

एक साइट पर एक लेख कहता है:

जब सूचकांक विखंडन 40% से अधिक हो तो सूचकांक का पुनर्निर्माण किया जाना चाहिए। जब सूचकांक विखंडन 10% से 40% के बीच हो तो सूचकांक को पुनर्गठित किया जाना चाहिए। अनुक्रमणिका पुनर्निर्माण प्रक्रिया अधिक CPU का उपयोग करती है और यह डेटाबेस संसाधनों को लॉक करती है। SQL सर्वर विकास संस्करण और एंटरप्राइज़ संस्करण में ONLINE का विकल्प होता है, जिसे अनुक्रमणिका के पुनर्निर्माण के समय चालू किया जा सकता है। ऑनलाइन विकल्प पुनर्निर्माण के दौरान सूचकांक को उपलब्ध रखेगा।

मैं इसे समझ नहीं सका, हालांकि यह कहता है कि WHENऐसा करने के लिए, लेकिन मैं यह जानना चाहूंगा कि WHYक्या हमें अनुक्रमों के पुनर्निर्माण और पुनर्गठन की आवश्यकता है?


जवाबों:


29

जैसे ही आप आवेषण अद्यतन करते हैं और हटाते हैं, आपके अनुक्रमण आंतरिक और बाह्य दोनों रूप से विखंडित हो जाएंगे।

आंतरिक विखंडन आप अपने सूचकांक पृष्ठों पर मुक्त स्थान का एक उच्च प्रतिशत है, जिसका अर्थ है कि SQL सर्वर को सूचकांक को स्कैन करते समय अधिक पृष्ठों को पढ़ने की आवश्यकता होती है।

बाहरी विखंडन तब होता है जब सूचकांक के पृष्ठ क्रम में नहीं होते हैं, इसलिए SQL सर्वर को अधिक काम करना पड़ता है, विशेष रूप से सूचकांक को पढ़ने के लिए IO शब्दों में।

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

जब आप किसी इंडेक्स को पुनर्गठित करते हैं, तो SQL सर्वर मौजूदा इंडेक्स पेजों का उपयोग करता है और बस उन युगों के डेटा को फेरबदल करता है। यह आंतरिक विखंडन को कम करेगा और बाहरी विखंडन की थोड़ी मात्रा को भी दूर कर सकता है। यह पुनर्निर्माण से हल्का वजन ऑपरेशन है और यह हमेशा ऑनलाइन रहता है।

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

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


महान...! सीधे तौर पर बताते हैं ...!
दिनेशबद

0

विखंडन को हटाने के लिए जो डेटाबेस स्तर की सुस्ती / लंबे समय तक चलने वाले प्रश्नों आदि जैसे मुद्दों का कारण बनता है।

विखंडन के बारे में विस्तृत जानकारी प्राप्त करने के लिए और अनुक्रमणिका (या अनुक्रमणिका पृष्ठों को पुन: व्यवस्थित करना) कैसे इसके लिए नीचे दिए गए लिंक पर काम करता है: https://www.idera.com/productssolutions/sqlserver/sqldefragmanager/shat-is-fragmentation


1
यह जानकारी आंशिक रूप से देखने के बाद अप्रचलित हो गई है कि सूचकांक विखंडन क्यों नहीं होता है
जॉन उर्फ ​​हॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.