2011-02-07 14 views
5

हालांकि यह आसानी से दस्तावेज किया गया है कि एनयूएलएल पंक्ति के लिए पोस्टग्रेस्क्ल टुपल हेडर में केवल 1 बिट लेता है, एनयूएलएल एनएलएलएस को एक शून्य कॉलम के इंडेक्स में कितना स्थान लेता है (टुपल नहीं, लेकिन सूचकांक)? क्या यह सूचकांक के भीतर समान 1 बिट है जैसा कि टुपल में है, या यह पूर्ण कॉलम डेटा प्रकार का आकार है (ईजी: पूर्णांक = 4 बाइट्स)?क्या एनयूएलएल पोस्टग्रेस्क्ल इंडेक्स के भीतर जगह लेते हैं?

प्रश्न का संदर्भ यह है कि मेरे पास एक पोस्टग्रेस्क्ल तालिका है जिसमें 3 संदर्भ कॉलम (ईजी: foo_id, bar_id और baz_id) हैं और किसी भी पंक्ति के लिए, केवल उन स्तंभों में से एक का मूल्य होगा (अन्य 2 कॉलम नल हो)। हालांकि, मुझे अनुक्रमित करने के लिए सभी 3 कॉलम चाहिए। यह मानते हुए कि प्रत्येक कॉलम एक पूर्णांक (पोस्टग्रेस्क्ल में 4 बाइट्स) है, प्रत्येक पंक्ति को 4 बाइट्स (गैर-शून्य कॉलम के लिए) प्लस 2 बिट्स (2 नल कॉलम के लिए) पर कब्जा करना चाहिए। हालांकि, अगर मैं सभी 3 कॉलम के लिए इंडेक्स जोड़ना चाहता था, तो 3 इंडेक्स के लिए स्टोरेज या तो 12 बाइट्स होगा (यदि सूचकांक शून्य मान के लिए पूर्ण 4 बाइट्स लेता है) या उसी 4 बाइट्स + 2 बिट्स जैसा कि खुद को टुपल करें।

+0

ठीक है, 1 तरीका है कि आप आंशिक रूप से इसका उत्तर दे सकते हैं - उन्हें डेटा प्रकार द्वारा आवश्यक बाइट्स की संख्या (केवल) द्वारा प्रदर्शित नहीं किया जा सका। आपके int उदाहरण में, 4 बाइट्स के हर संभव संयोजन एक वैध int मान का प्रतिनिधित्व करता है - इसलिए उन चार बाइट्स में एक नल को एन्कोड किया जा सकता है। –

उत्तर

1

बीटीआई एक्सेस दिनचर्या इंडेक्स से वास्तविक कुंजी प्राप्त करने के लिए पेजजीटइटम() का उपयोग करते हैं। तो मेरा मानना ​​है कि बीटीई इंडेक्स पेज नियमित स्टोरेज योजना का उपयोग नियमित रूप से ढेर पृष्ठों (शून्यता मास्क समेत) के रूप में करते हैं, उनके पास पृष्ठ के "विशेष" क्षेत्र में सभी ब्रीटी पॉइंटर्स रखने के लिए अतिरिक्त नेविगेशन जानकारी होती है।

संबंधित मुद्दे