Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle विभाजन सूचकांक

पिछले लेख में, हमने Oracle विभाजित तालिका के बारे में सीखा। उस श्रृंखला की निरंतरता में, मैं यहाँ Oracle विभाजन अनुक्रमणिका प्रस्तुत करूँगा

यहाँ विभाजित इंडेक्स को समझने के बारे में कुछ तथ्य दिए गए हैं

स्थानीय विभाजन अनुक्रमणिका

  • विभाजित तालिका पर एक स्थानीय अनुक्रमणिका बनाई जाती है जहां अनुक्रमणिका को ठीक उसी तरह से विभाजित किया जाता है जैसे अंतर्निहित विभाजन तालिका। यही है, स्थानीय अनुक्रमणिका तालिका की विभाजन विधि को इनहेरिट करती है। इसे सम-विभाजन के रूप में जाना जाता है।
  • स्थानीय अनुक्रमणिका के लिए, अनुक्रमणिका के भीतर अनुक्रमणिका कुंजियाँ केवल एकल अंतर्निहित तालिका विभाजन में संग्रहीत पंक्तियों को संदर्भित करेंगी। LOCAL विशेषता को निर्दिष्ट करके एक स्थानीय अनुक्रमणिका बनाई जाती है, और इसे UNIQUE या NON-UNIQUE के रूप में बनाया जा सकता है।
  • तालिका और स्थानीय अनुक्रमणिका या तो बिल्कुल समान तरीके से विभाजित हैं, या एक ही विभाजन कुंजी है क्योंकि स्थानीय अनुक्रमणिका स्वचालित रूप से बनाए रखी जाती हैं, उच्च उपलब्धता प्रदान कर सकती हैं।
  • चूंकि Oracle डेटाबेस यह सुनिश्चित करता है कि इंडेक्स पार्टीशन उनके संबंधित टेबल पार्टिशन के साथ सिंक्रोनाइज़ किया गया है, यह इस प्रकार है कि डेटाबेस स्वचालित रूप से इंडेक्स पार्टीशन को बनाए रखता है जब भी कोई रखरखाव ऑपरेशन अंतर्निहित टेबल पर किया जाता है
  • उदाहरण के लिए, जब विभाजन जोड़े, गिराए या मर्ज किए जाते हैं।
  • यदि तालिका की विभाजन कुंजी और अनुक्रमणिका कुंजी समान हैं तो एक स्थानीय अनुक्रमणिका उपसर्ग है; अन्यथा यह एक स्थानीय गैर-उपसर्ग अनुक्रमणिका है
SQL> CREATE TABLE EXP_PART (id number, item_id number, name varchar2(20))
  PARTITION BY RANGE (id, item_id)
  (partition EXP_PART_1 values less than (10, 100),
  partition EXP_PART_2 values less than (20, 200),
  partition EXP_PART_3 values less than (30, 300),
  partition EXP_PART_4 values less than (40, 400));
 Table created.

 SQL> CREATE INDEX test_idx ON EXP_PART(id, item_id)
  LOCAL
  (partition test_idx_1,
  partition test_idx_2,
  partition test_idx_3,
  partition test_idx_4);
 Index created.

SQL> SELECT index_name, partition_name, status
  FROM user_ind_partitions where index_name='TEST_IDX'
  ORDER BY index_name, partition_name;
 INDEX_NAME PARTITION_NAME STATUS
 ---------   -----------    ------
 TEST_IDX IX_TEST_IDX_1 USABLE
 TEST_IDX IX_TEST_IDX_2 USABLE
 TEST_IDX IX_TEST_IDX_3 USABLE
 TEST_IDX IX_TEST_IDX_4 USABLE

वैश्विक विभाजन अनुक्रमणिका

  • एक वैश्विक विभाजन सूचकांक एक विभाजित या गैर-विभाजित तालिका पर एक सूचकांक है जो स्वतंत्र रूप से विभाजित है, अर्थात तालिका से एक अलग विभाजन कुंजी का उपयोग कर रहा है। वैश्विक-विभाजित अनुक्रमित श्रेणी या हैश विभाजन हो सकते हैं। वैश्विक विभाजन अनुक्रमणिका को स्थानीय अनुक्रमणिका की तुलना में बनाए रखना अधिक कठिन होता है। हालांकि, वे किसी भी व्यक्तिगत रिकॉर्ड के लिए अधिक कुशल पहुंच विधि प्रदान करते हैं।
  • पार्टीशन मेंटेनेंस के दौरान टेबल या इंडेक्स इंटरेक्शन के दौरान, ग्लोबल इंडेक्स के सभी पार्टिशन प्रभावित होंगे।
  • जब अंतर्निहित तालिका विभाजन में कोई SPLIT, MOVE, DROP, या TRUNCATE रखरखाव संचालन होता है, तो वैश्विक अनुक्रमणिका और वैश्विक विभाजन अनुक्रमणिका दोनों को अनुपयोगी के रूप में चिह्नित किया जाएगा। इसलिए यह उस विभाजन की स्वतंत्रता का अनुसरण करता है जो वैश्विक सूचकांकों के लिए संभव नहीं है।
  • टेबल विभाजन पर किए गए ऑपरेशन के प्रकार के आधार पर, टेबल पर इंडेक्स प्रभावित होंगे। तालिका विभाजन को बदलते समय, अद्यतन सूचकांक खंड निर्दिष्ट किया जा सकता है। यह स्वचालित रूप से प्रभावित वैश्विक अनुक्रमणिका और विभाजन को बनाए रखता है।
  • इस विकल्प का उपयोग करने के लाभ यह हैं कि सूचकांक ऑनलाइन रहेगा और पूरे ऑपरेशन के दौरान उपलब्ध रहेगा, और ऑपरेशन पूरा होने के बाद इसे फिर से बनाने की आवश्यकता नहीं है।
SQL> CREATE TABLE EXP_PART (id number, item_id number, name varchar2(20))
  PARTITION BY RANGE (id, item_id)
  (partition EXP_PART_1 values less than (10, 100),
  partition EXP_PART_2 values less than (20, 200),
  partition EXP_PART_3 values less than (30, 300),
  partition EXP_PART_4 values less than (40, 400));
 Table created.

 SQL> CREATE UNIQUE INDEX EXP_PART_IDX ON EXP_PART(id, item_id)
  GLOBAL PARTITION BY RANGE (id, item_id)
  (partition EXP_PART_IDX_1 values less than (20, 200),
   partition EXP_PART_IDX_2 values less than (maxvalue, maxvalue));
 Index created.

SQL> SELECT index_name, partition_name, status
  FROM user_ind_partitions where index_name='EXP_PART_IDX'
  ORDER BY index_name, partition_name;
 INDEX_NAME PARTITION_NAME STATUS
 
 EXP_PART_IDX EXP_PART_IDX_1 USABLE
 EXP_PART_IDX EXP_PART_IDX_2 USABLE

वैश्विक गैर-विभाजित अनुक्रमणिका

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

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

उपसर्ग और गैर-उपसर्ग अनुक्रमणिका क्या है?

अनुक्रमणिका को उपसर्ग कहा जाता है यदि अनुक्रमणिका परिभाषा में अग्रणी स्तंभ (स्तंभ) विभाजन कुंजी स्तंभ हैं, अन्यथा इसे गैर-उपसर्ग कहा जाता है।

क्या हम वैश्विक सूचकांक का उप-विभाजन कर सकते हैं?

नहीं, आप वैश्विक सूचकांक को उपविभाजित नहीं कर सकते, लेकिन आप इसे विभाजित कर सकते हैं। अनुक्रमणिका उप-विभाजन को समाप्त करने का एकमात्र तरीका स्थानीय अनुक्रमणिका के साथ एक उप-विभाजित तालिका है

कैसे पता करें कि कोई अनुक्रमणिका वैश्विक है या स्थानीय

DBA_PART_INDEXES में कॉलम, LOCALITY को क्वेरी करके।

यह भी पढ़ता है

  • Oracle डेटाबेस व्यवस्थापन ट्यूटोरियल
  • https://docs.oracle.com/en/database/oracle/oracle-database/18/vldbg/index-partitioning.html#GUID-569F94D0-E6E5-45BB-9626-5506DE18FF00
  • ओरेकल में दिनांक स्वरूप बदलें


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle® . से Salesforce को अपडेट कर रहा है

  2. मेरे पैच कहाँ हैं?

  3. SQLcl स्वरूपण विकल्प (ओरेकल)

  4. आरयू या आरयूआर?

  5. सप्ताह के दिन सोमवार से रविवार तक छाँटें