2015-10-13 6 views
5

PostgreSQL 9.4PostgreSQL में undestanding बिटमैप अनुक्रमणिका

मैं सिर्फ नोड Bitmap Index Scan कहा जाता है और तथाकथित अंतर्निहित बिटमैप डेटा संरचना की अवधारणा के साथ सामना in this post उल्लेख किया है। जहां तक ​​मुझे मिला, PostgreSQL बिटमैप इंडेक्स बनाने का समर्थन नहीं करता है।

प्रश्न: तो किसी भी समय हम क्रम में बिटमैप डेटा संरचना का उपयोग करना Bitmap Index Scan हम इसे पहले का निर्माण करने की जरूरत है संपन्न करते हैं या PostgreSQL एक btree सूचकांक के निर्माण के दौरान यह बनाता है और यह किसी भी समय तालिका के बदल के पुनर्निर्माण के लिए ?

उत्तर

21

प्रत्येक क्वेरी के लिए पृष्ठों का बिटमैप गतिशील रूप से बनाया गया है। यह कैश या फिर से उपयोग नहीं किया जाता है, और बिटमैप इंडेक्स स्कैन के अंत में त्याग दिया जाता है।

पेज बिटमैप को अग्रिम में बनाने का अर्थ नहीं है क्योंकि इसकी सामग्री भविष्यवाणी पर निर्भर करती है।

कहें कि आप x=1 and y=2 खोज रहे हैं। आपके पास x और y पर बी-पेड़ इंडेक्स हैं। PostgreSQL x और y को बिटमैप में गठबंधन नहीं करता है, फिर बिटमैप को खोजें। यह x=1 वाले सभी पृष्ठों के पृष्ठ पते के लिए सूचकांक x स्कैन करता है और एक बिटमैप बनाता है जहां x=1 वाले पृष्ठ सत्य हैं। फिर यह y स्कैन करता है जो पेज पतों की तलाश में है जहां y2 के बराबर हो सकता है, जिससे उसमें बिटमैप बन सकता है। फिर यह उन पृष्ठों को ढूंढने के लिए कहता है जहां x=1 और y=2 दोनों सत्य हो सकते हैं। आखिरकार, यह तालिका को स्वयं स्कैन करता है, केवल उन पृष्ठों को पढ़ता है जिनमें उम्मीदवार मूल्य हो सकते हैं, प्रत्येक पृष्ठ को पढ़ सकते हैं और केवल पंक्तियों को रखते हुए x=1 and y=2

अब, यदि आप कैश किए गए, पूर्व-निर्मित बिटमैप इंडेक्स की तरह कुछ ढूंढ रहे हैं, तो PostgreSQL 9.5: BRIN indexes में ऐसी कोई चीज़ है। ये बहुत बड़ी टेबल के लिए हैं, और तालिका के उन श्रेणियों को ढूंढने का एक तरीका प्रदान करते हैं जिन्हें छोड़ दिया जा सकता है क्योंकि वे ज्ञात मूल्य नहीं रखते हैं।

2

डेटा पृष्ठों का बिटमैप इंडेक्स या मांग पर अधिक सूचकांक (प्रति क्वेरी) से बनाया गया है। इसका उपयोग तब किया जाता है जब सूचकांक कम पंक्तियों से अधिक लौटाता है, या जब दो या दो से अधिक इंडेक्स का उपयोग उसी संबंध में किया जाता है। बिटमैप की सामग्री नियंत्रित करती है कि किन पृष्ठों को संसाधित किया जाना चाहिए और किन पृष्ठों को छोड़ा जाना चाहिए।

इस स्कैन विधि की मूल आवश्यकता तालिका पर मौजूदा अनुक्रमणिका है।

+0

तो, हम किसी भी समय 'बिटमैप हीप स्कैन' करने की आवश्यकता होने पर स्ट्रैच_ से संरचना का निर्माण करते हैं? –

+0

नहीं, यह उपयोगकर्ता के लिए पारदर्शी है। –

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