Oracle
की अनुक्रमणिका कभी भी "असंतुलित" नहीं होती:अनुक्रमणिका का प्रत्येक पत्ता किसी अन्य पत्ती की तरह ही गहराई पर होता है।
कोई भी पेज स्प्लिट अपने आप में एक नया स्तर पेश नहीं करता है:एक लीफ पेज नए पेजों के लिए पैरेंट नहीं बनता है जैसे कि यह एक गैर-सेल्फ-बैलेंसिंग ट्री पर होगा।
इसके बजाय, विभाजित पृष्ठ के लिए एक सहोदर बनाया जाता है और नया रिकॉर्ड (साथ ही संभवतः पुराने पृष्ठ के कुछ रिकॉर्ड) नए पृष्ठ पर चला जाता है। पैरेंट में नए पेज के लिए एक पॉइंटर जोड़ा जाता है।
अगर पैरेंट पेज में भी जगह नहीं है (नए बनाए गए लीफ पेज पर पॉइंटर को स्वीकार नहीं कर सकता), तो यह भी विभाजित हो जाता है, और इसी तरह।
ये विभाजन मूल पृष्ठ तक फैल सकते हैं, जिसका विभाजन ही एकमात्र ऐसी चीज है जो सूचकांक की गहराई को बढ़ाता है (और यह सभी पृष्ठों के लिए एक ही बार में करता है)।
अनुक्रमणिका पृष्ठ अतिरिक्त रूप से डबल-लिंक्ड सूचियों में व्यवस्थित होते हैं, प्रत्येक सूची अपने स्तर पर। यदि पेड़ असंतुलित होता तो यह असंभव होता।
अगर master_id
स्वत:वृद्धि हुई है इसका मतलब है कि सभी विभाजन अंत में होते हैं (जैसे 90/10
कहा जाता है) स्प्लिट्स) जो सबसे सघन इंडेक्स को संभव बनाता है।
नहीं, उपरोक्त कारणों से ऐसा नहीं होगा।
अगर आप slave
में शामिल होते हैं करने के लिए master
अक्सर, आप एक CLUSTER
बनाने पर विचार कर सकते हैं master_id
. द्वारा अनुक्रमित दो तालिकाओं में से . इसका अर्थ है कि दोनों तालिकाओं के रिकॉर्ड, समान master_id
. साझा कर रहे हैं , उसी या आस-पास के डेटा पेजों पर जाएं जो उनके बीच बहुत तेजी से जुड़ते हैं।
जब इंजन को master
. से एक रिकॉर्ड मिला , किसी अनुक्रमणिका के साथ या जो भी हो, इसका अर्थ यह भी है कि उसे पहले ही slave
. के रिकॉर्ड मिल गए हैं उस master
. के साथ जुड़ने के लिए . और इसके विपरीत, slave
. का पता लगाना इसका अर्थ इसके master
का पता लगाना भी है ।