भरण कारक के आधार पर अनुक्रमित में डेटा का व्यवहार


14

मान लीजिए कि आपके पास एक डेटाबेस है जहां डिफ़ॉल्ट भरण कारक 20 है। जब भी डेटा डाला जाता है, क्या यह केवल 20% तक भरे हुए पृष्ठ बनाता है?

मेरी समझ से, जब डेटा डाला जाता है तो पृष्ठों में लगभग 20% डेटा होगा। जब डेटा अपडेट किया जाता है, तब भी, यह सूचकांक के 20% से अधिक तक विस्तार करेगा, इसे भरने और एक पेज विभाजन उत्पन्न करने के लिए, है ना?

जवाबों:


16

जब कोई इंडेक्स बनता है या फिर से बनाया जाता है तो फिल फैक्टर केवल खेल में आता है। यह इन कार्यों के दौरान भरे जाने वाले पत्ती स्तर पृष्ठों के सूचकांक के लिए खपत की मात्रा है। ( प्रभावित पृष्ठ स्तरों पर अधिक स्पष्टीकरण के लिए नीचे नोट देखें )

जब आंकड़ों के कोई DML आदेश नहीं है ( INSERT, UPDATE, और / या DELETE), यह इसी से प्रभावित अनुक्रमित का क्या होगा। दूसरे शब्दों में, यदि आपके पास एक पृष्ठ है जो 20% भरा हुआ है और आप उस पृष्ठ में डेटा सम्मिलित करते हैं, तो पृष्ठ में 20% से अधिक डेटा होगा (उदाहरण के लिए केवल 35% कहते हैं)। एक और प्रविष्टि करें, अब पृष्ठ 64% भरा हुआ है। अनुक्रमणिका का पुनर्निर्माण करें, और पत्ती स्तर के पृष्ठों में अब आपके द्वारा निर्दिष्ट स्पेस प्रतिशत (या सर्वर के लिए डिफ़ॉल्ट रूप से अनुमानित मूल्य) होगा।

( ध्यान दें , जब आप निर्दिष्ट नहीं करते PAD_INDEXहैं ON, तो भरने का कारक केवल लीफ लेवल पेजों पर लागू होता है। लेकिन जब आप सेट करते हैं PAD_INDEX = ON, तो भरने वाले कारक को इंडेक्स के मध्यवर्ती स्तर के पन्नों के लिए ध्यान में रखा जाएगा। डिफ़ॉल्ट हैOFF )

भरण कारक (डिफ़ॉल्ट 100/0 का उपयोग करने के बजाय) को समायोजित करने का कारण यह है कि आप डेटा को सम्मिलित या अद्यतन करते समय पृष्ठ विभाजन को कम कर देते हैं। लेकिन ध्यान रखें, कुछ भी मुफ्त में नहीं है। भरण कारक जितना कम होगा, उतना अधिक स्थान डेटा सामान्य रूप से ऊपर ले जाएगा। यदि आप अपने अनुक्रमित के लिए 80% मुक्त पृष्ठ स्थान रखते हैं, तो वे अपेक्षाकृत अधिक मात्रा में डिस्क स्थान का उपभोग करेंगे, जिससे अधिक रीड हो सकते हैं।

मेरी समझ से, जब डेटा डाला जाता है तो पृष्ठों में लगभग 20% डेटा होगा। जब डेटा अपडेट किया जाता है, तब भी, यह सूचकांक के 20% से अधिक तक विस्तार करेगा, इसे भरने और एक पेज विभाजन उत्पन्न करने के लिए, है ना?

जब डेटा डाला जाता है तो वह उचित पेज पर उपयुक्त इंडेक्स में डालेगा। यह और बहुत संभव है कि बहुत अच्छी तरह से पृष्ठ की खपत को भरने के कारक से अधिक होने का कारण होगा।

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

भरण कारक कम करने का एक वैध कारण पृष्ठ विभाजन को कम करना होगा, इसलिए सूचकांक पृष्ठ विखंडन को कम करना।


3
यह अंतरिक्ष बढ़ने या आवंटित करने के लिए आवश्यक IO परिचालनों को भी कम करता है।
जेएनके

ठीक है, इसलिए मैं गलत था कि व्यवहार कैसे काम करता है। इस तरह के एक विस्तृत जवाब के लिए धन्यवाद!
DForck42

1
@ DForck42 कोई समस्या नहीं, मदद करने में खुशी होगी।
थॉमस स्ट्रिंगर

क्या हम यह कहने के लिए संक्षेप में कह सकते हैं कि कम भरण कारक स्थापित करने से धीमी गति से रीड्स (अधिक पृष्ठ) होंगे लेकिन गति आवेषण (कम विभाजन)?
जॉन ऑफ ऑल ट्रेड्स

2
@Jon: उच्च भराव के साथ खंडों को अनुक्रमित करता है और धीमा पढ़ता है। प्रत्येक सूचकांक के लिए एक इष्टतम भराव होता है - इसके ऊपर और नीचे यह धीमा लिखता है और पढ़ता है। इष्टतम उपयोग पैटर्न (प्रति दिन कितने आवेषण), रखरखाव पैटर्न (कितनी बार इसके पुनर्निर्माण), डेटा (कितनी अनोखी कुंजी है) पर निर्भर करता है। गैर-अनूठे अनुक्रमों को अधिक खाली स्थान (कम भराव) की आवश्यकता होती है।
wqw 12
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.