उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति · पाठ

विभाजन हटाना और बहिष्करण

गहराई से समझें कि अनुकूलक अप्रासंगिक विभाजनों को हटाने के लिए विभाजन कुंजियों का उपयोग कैसे करता है, जिससे स्कैन किए जाने वाले डेटा की मात्रा बहुत कम हो जाती है।

पाठ 3, कुल 4 में से11 चरण

विभाजन हटाना और बहिष्करण, CoddyKit पर उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

Partition Pruning क्या है

PostgreSQL की एक महत्वपूर्ण अनुकूलन तकनीक: Partition Pruning में आपका स्वागत है। इसमें डेटाबेस उन पार्टिशनों को स्कैन करना समझदारी से छोड़ देता है जिनमें क्वेरी द्वारा खोजा जा रहा डेटा हो ही नहीं सकता।

इसे पुस्तकालय की अलमारियों को छाँटने जैसा समझिए: यदि आप 2023 में प्रकाशित पुस्तक खोज रहे हैं, तो आप '1990-1999' या '2000-2010' लिखी अलमारियाँ नहीं देखेंगे।

अनुकूलक कैसे काम करता है

जब आप partitioned तालिका पर क्वेरी चलाते हैं, तो PostgreSQL का क्वेरी प्लानर WHERE क्लॉज़ की जाँच करता है। यह आपकी क्वेरी की शर्तों की तुलना तालिका के पार्टिशनों की परिभाषाओं से करता है।

यदि क्वेरी की शर्तों से यह निश्चित हो कि कुछ पार्टिशनों में मिलती-जुलती कोई पंक्ति हो ही नहीं सकती, तो अनुकूलक उन पार्टिशनों को स्कैन योजना से हटा देता है। इससे डिस्क से पढ़े जाने वाले डेटा की मात्रा काफी कम हो जाती है।

रेंज पार्टिशन के साथ pruning

Partition pruning रेंज के आधार पर partitioned तालिकाओं में सबसे स्पष्ट दिखाई देता है, खासकर उन तालिकाओं में जिन्हें तारीख या टाइमस्टैम्प के आधार पर partitioned किया गया हो। उदाहरण के लिए, यदि आपकी तालिका महीने के आधार पर partitioned है और आप किसी विशेष सप्ताह का डेटा पूछते हैं, तो केवल संबंधित महीने के पार्टिशन स्कैन किए जाएँगे।

समय-श्रृंखला डेटा के लिए यह बेहद शक्तिशाली है, क्योंकि क्वेरी अक्सर विशेष समय-अवधियों को लक्ष्य बनाती हैं।

प्रदर्शन: रेंज pruning

आइए एक सरल रेंज के आधार पर partitioned तालिका बनाएँ और देखें कि EXPLAIN pruning कैसे दिखाता है। हम sale_date के आधार पर पार्टिशन बनाएँगे।

ध्यान दें कि EXPLAIN का आउटपुट केवल संबंधित पार्टिशन पर स्कैन दिखाएगा, अन्य पार्टिशन पर नहीं।

CREATE TABLE sales (
    sale_id INT,
    sale_date DATE,
    amount NUMERIC
) PARTITION BY RANGE (sale_date);

CREATE TABLE sales_2023_q1 PARTITION OF sales
FOR VALUES FROM ('2023-01-01') TO ('2023-04-01');

CREATE TABLE sales_2023_q2 PARTITION OF sales
FOR VALUES FROM ('2023-04-01') TO ('2023-07-01');

INSERT INTO sales VALUES (1, '2023-01-15', 100);
INSERT INTO sales VALUES (2, '2023-04-20', 200);

EXPLAIN SELECT * FROM sales WHERE sale_date = '2023-01-15';

सूची पार्टिशन के साथ pruning

Partition pruning सूची के आधार पर partitioned तालिकाओं के साथ भी प्रभावी ढंग से काम करता है। यदि आपकी तालिका किसी अलग-अलग मान, जैसे क्षेत्र या स्थिति कोड, के आधार पर partitioned है और आपकी क्वेरी उसी विशिष्ट मान पर फ़िल्टर करती है, तो केवल संबंधित पार्टिशन स्कैन किया जाएगा।

जब आप अक्सर कुछ विशेष श्रेणियों या समूहों से संबंधित डेटा पूछते हैं, तब यह उपयोगी होता है।

प्रदर्शन: सूची pruning का उदाहरण

यहाँ region कॉलम के आधार पर सूची में partitioned तालिका का एक उदाहरण है। EXPLAIN के आउटपुट को देखकर ध्यान दें कि केवल 'North' पार्टिशन स्कैन हो रहा है।

CREATE TABLE products (
    product_id INT,
    region TEXT,
    price NUMERIC
) PARTITION BY LIST (region);

CREATE TABLE products_north PARTITION OF products
FOR VALUES IN ('North');

CREATE TABLE products_south PARTITION OF products
FOR VALUES IN ('South');

INSERT INTO products VALUES (101, 'North', 50.00);
INSERT INTO products VALUES (102, 'South', 75.00);

EXPLAIN SELECT * FROM products WHERE region = 'North';

स्थिर बनाम गतिशील pruning

PostgreSQL pruning के दो मुख्य प्रकारों का उपयोग करता है:

  • स्थिर pruning: यह क्वेरी की योजना बनाते समय होता है। प्लानर आपकी WHERE क्लॉज़ में दिए गए स्पष्ट मान देख सकता है और तुरंत पार्टिशन हटा सकता है।
  • गतिशील pruning: यह क्वेरी चलने के दौरान होता है। यह अधिक जटिल मामलों के लिए है, जैसे जब पार्टिशन कुंजी पर किसी सबक्वेरी के परिणाम या किसी जॉइन के पैरामीटर से फ़िल्टर लगाया गया हो। डेटाबेस क्वेरी चलाते समय तय करता है कि किन पार्टिशनों को स्कैन करना है।

Pruning कब नहीं हो सकती

हालाँकि यह शक्तिशाली है, लेकिन partition pruning हमेशा संभव नहीं होती:

  • जटिल एक्सप्रेशन: यदि आपकी WHERE क्लॉज़ पार्टिशन कुंजी पर किसी फ़ंक्शन या जटिल एक्सप्रेशन का उपयोग करती है (जैसे, EXTRACT(MONTH FROM sale_date) = 1)।
  • गैर-पार्टिशन कुंजी फ़िल्टर: जो क्वेरी केवल उन कॉलम पर फ़िल्टर करती हैं जो पार्टिशन कुंजी का हिस्सा नहीं हैं, वे सभी पार्टिशन स्कैन करेंगी।
  • जॉइन: जॉइन के साथ pruning अधिक कठिन हो सकती है, खासकर तब जब जॉइन की शर्त सीधे पार्टिशन कुंजी से संबंधित न हो या मान रनटाइम तक ज्ञात न हों।

EXPLAIN से pruning सत्यापित करना

यह पुष्टि करने के लिए कि partition pruning काम कर रही है, हमेशा EXPLAIN (या EXPLAIN ANALYZE) का उपयोग करें। इस तरह की पंक्तियाँ देखें:

  • -> Partition Selector (Dyanmic Partition Pruning)
  • -> Append (partitions: 1)
  • -> Result (partitions: 1)

मुख्य बात यह देखना है कि पूरी partitioned तालिका या उसकी सभी child तालिकाओं को स्कैन करने के बजाय सीमित संख्या में पार्टिशन चुने गए हैं।

त्वरित जाँच: pruning के लाभ

बड़ी partitioned तालिकाओं पर क्वेरी को अनुकूलित करने के लिए partition pruning को समझना महत्वपूर्ण है। आइए आपके ज्ञान की जाँच करें!

Pruning में महारत!

आपने partition pruning में महारत हासिल कर ली है! अब आप समझते हैं कि यह PostgreSQL का एक महत्वपूर्ण अनुकूलन है, जो:

  • स्कैन किए जाने वाले डेटा की मात्रा को काफी कम करता है।
  • WHERE क्लॉज़ की तुलना पार्टिशन की परिभाषाओं से करके काम करता है।
  • रेंज और सूची पार्टिशन के साथ विशेष रूप से प्रभावी होता है।
  • स्थिर (योजना बनाने के समय) या गतिशील (चलाने के समय) हो सकता है।
  • EXPLAIN का उपयोग करके सत्यापित किया जा सकता है।

Partition pruning का लाभ उठाकर आप सुनिश्चित करते हैं कि बड़े डेटासेट पर आपकी क्वेरी जितनी संभव हो उतनी कुशलता से चलें!

शुरुआत निःशुल्क

एआई शिक्षक के साथ उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
11
पाठ
44

अक्सर पूछे जाने वाले प्रश्न

क्या “विभाजन हटाना और बहिष्करण” पाठ निःशुल्क है?

हाँ—“विभाजन हटाना और बहिष्करण” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“विभाजन हटाना और बहिष्करण” में मैं क्या सीखूँगा?

गहराई से समझें कि अनुकूलक अप्रासंगिक विभाजनों को हटाने के लिए विभाजन कुंजियों का उपयोग कैसे करता है, जिससे स्कैन किए जाने वाले डेटा की मात्रा बहुत कम हो जाती है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“विभाजन हटाना और बहिष्करण” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. विभाजन के साथ क्वेरी अनुकूलन
  2. विभाजनों को संलग्न और अलग करना
  3. विभाजन हटाना और बहिष्करण
  4. पार्टीशन-वार जॉइन और एग्रीगेट
← उन्नत PostgreSQL: अनुक्रमण, विभाजन और प्रतिकृति पर वापस जाएँ