Teradata - विभाजन प्राथमिक सूचकांक

विभाजन प्राथमिक सूचकांक (PPI) एक अनुक्रमण तंत्र है जो कुछ प्रश्नों के प्रदर्शन को बेहतर बनाने में उपयोगी है। जब पंक्तियों को एक तालिका में डाला जाता है, तो उन्हें एएमपी में संग्रहीत किया जाता है और उनकी पंक्ति हैश क्रम द्वारा व्यवस्थित की जाती है। जब एक टेबल को पीपीआई के साथ परिभाषित किया जाता है, तो पंक्तियों को उनके विभाजन संख्या द्वारा क्रमबद्ध किया जाता है। प्रत्येक विभाजन के भीतर, उनकी पंक्ति हैश द्वारा व्यवस्थित की जाती है। परिभाषित विभाजन के आधार पर पंक्तियों को एक विभाजन को सौंपा गया है।

लाभ

  • कुछ प्रश्नों के लिए पूर्ण तालिका स्कैन से बचें।

  • अतिरिक्त शारीरिक संरचना और अतिरिक्त I / O रखरखाव की आवश्यकता वाले माध्यमिक सूचकांक के उपयोग से बचें।

  • एक बड़ी तालिका के सबसेट को जल्दी से एक्सेस करें।

  • पुराने डेटा को जल्दी से ड्रॉप करें और नया डेटा जोड़ें।

उदाहरण

ऑर्डरऑनो पर प्राथमिक सूचकांक के साथ निम्नलिखित आदेश तालिका पर विचार करें।

जमा मत करो आदेश संख्या आदेश की तारीख कुल आदेश
101 7501 2015/10/01 900
101 7502 2015/10/02 1,200
102 7503 2015/10/02 3000
102 7504 2015/10/03 2,454
101 7505 2015/10/03 1201
103 7506 2015/10/04 2,454
101 7507 2015/10/05 1201
101 7508 2015/10/05 1201

मान लें कि रिकॉर्ड एएमपी के बीच वितरित किए गए हैं जैसा कि निम्नलिखित तालिकाओं में दिखाया गया है। रिकॉर्ड किए गए AMPs में संग्रहीत किए जाते हैं, उनकी पंक्ति हैश के आधार पर सॉर्ट की जाती हैं।

एएमपी 1

RowHash आदेश संख्या आदेश की तारीख
1 7505 2015/10/03
2 7504 2015/10/03
3 7501 2015/10/01
4 7508 2015/10/05

एएमपी 2

RowHash आदेश संख्या आदेश की तारीख
1 7507 2015/10/05
2 7502 2015/10/02
3 7506 2015/10/04
4 7503 2015/10/02

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

निम्न डेटा दिखाता है कि रिकॉर्ड को एएमपी में कैसे संग्रहीत किया जाएगा, यदि वे ऑर्डर दिनांक द्वारा विभाजित किए गए हैं। यदि ऑर्डर दिनांक द्वारा रिकॉर्ड्स तक पहुंचने के लिए एक क्वेरी चलाई जाती है, तो केवल उस विशेष ऑर्डर के रिकॉर्ड वाले विभाजन को एक्सेस किया जाएगा।

एएमपी 1

PARTITION RowHash आदेश संख्या आदेश की तारीख
0 3 7501 2015/10/01
1 1 7505 2015/10/03
1 2 7504 2015/10/03
2 4 7508 2015/10/05

एएमपी 2

PARTITION RowHash आदेश संख्या आदेश की तारीख
0 2 7502 2015/10/02
0 4 7503 2015/10/02
1 3 7506 2015/10/04
2 1 7507 2015/10/05

विभाजन प्राथमिक सूचकांक के साथ एक तालिका बनाने के लिए एक उदाहरण निम्नलिखित है। विभाजन द्वारा खंड विभाजन को परिभाषित करने के लिए उपयोग किया जाता है।

CREATE SET TABLE Orders (
   StoreNo SMALLINT, 
   OrderNo INTEGER, 
   OrderDate DATE FORMAT 'YYYY-MM-DD', 
   OrderTotal INTEGER 
) 
PRIMARY INDEX(OrderNo) 
PARTITION BY RANGE_N  (
   OrderDate BETWEEN DATE '2010-01-01' AND '2016-12-31' EACH INTERVAL '1' DAY
);

उपरोक्त उदाहरण में, तालिका को ऑर्डरडेट कॉलम द्वारा विभाजित किया गया है। प्रत्येक दिन के लिए एक अलग विभाजन होगा।