खोज…


परिचय

विभाजन तालिका और अनुक्रमित को छोटे टुकड़ों में विभाजित करने के लिए एक कार्यक्षमता है। इसका उपयोग प्रदर्शन को बेहतर बनाने और छोटे टुकड़ों को व्यक्तिगत रूप से प्रबंधित करने के लिए किया जाता है। विभाजन कुंजी एक स्तंभ या स्तंभों का एक समूह है जो परिभाषित करता है कि किस विभाजन में प्रत्येक पंक्ति संग्रहीत होने वाली है। आधिकारिक ओरेकल प्रलेखन में विभाजन अवलोकन

टिप्पणियों

विभाजन एक अतिरिक्त लागत विकल्प है और केवल एंटरप्राइज़ संस्करण के लिए उपलब्ध है।

हैश विभाजन

यह हैश द्वारा विभाजित तालिका बनाता है, इस उदाहरण में स्टोर आईडी पर।

CREATE TABLE orders (
    order_nr NUMBER(15),
    user_id VARCHAR2(2),
    order_value NUMBER(15),
    store_id NUMBER(5)
) 
PARTITION BY HASH(store_id) PARTITIONS 8;

आपको हैश विभाजन की संख्या के लिए 2 की शक्ति का उपयोग करना चाहिए, ताकि आपको विभाजन आकार में समान वितरण मिल सके।

श्रेणी विभाजन

यह श्रेणियों द्वारा विभाजित तालिका बनाता है, इस उदाहरण में ऑर्डर मानों पर।

CREATE TABLE orders (
    order_nr NUMBER(15),
    user_id VARCHAR2(2),
    order_value NUMBER(15),
    store_id NUMBER(5)
) 
PARTITION BY RANGE(order_value) (
    PARTITION p1 VALUES LESS THAN(10), 
    PARTITION p2 VALUES LESS THAN(40), 
    PARTITION p3 VALUES LESS THAN(100),
    PARTITION p4 VALUES LESS THAN(MAXVALUE)
); 

मौजूदा विभाजन का चयन करें

स्कीमा पर मौजूदा विभाजन की जाँच करें

SELECT * FROM user_tab_partitions;

सूची विभाजन

यह सूचियों द्वारा विभाजित तालिका बनाता है, इस उदाहरण में स्टोर आईडी पर।

CREATE TABLE orders (
    order_nr NUMBER(15),
    user_id VARCHAR2(2),
    order_value NUMBER(15),
    store_id NUMBER(5)
) 
PARTITION BY LIST(store_id) (
    PARTITION p1 VALUES (1,2,3), 
    PARTITION p2 VALUES(4,5,6),
    PARTITION p3 VALUES(7,8,9),
    PARTITION p4 VALUES(10,11)
);

विभाजन को छोड़ें

ALTER TABLE table_name DROP PARTITION partition_name;

एक विभाजन से डेटा का चयन करें

एक विभाजन से डेटा का चयन करें

SELECT * FROM orders PARTITION(partition_name);

एक विभाजन को काटें

ALTER TABLE table_name TRUNCATE PARTITION partition_name;

एक विभाजन का नाम बदलें

ALTER TABLE table_name RENAME PARTITION p3 TO p6;

विभाजन को विभिन्न तालिकाओं में ले जाएँ

ALTER TABLE table_name 
MOVE PARTITION partition_name TABLESPACE tablespace_name;

नया विभाजन जोड़ें

ALTER TABLE table_name 
ADD PARTITION new_partition VALUES LESS THAN(400);

विभाजन विभाजन

कुछ विभाजन को दो विभाजन में विभाजित करता है जिसमें एक और उच्च सीमा होती है।

ALTER TABLE table_name SPLIT PARTITION old_partition 
    AT (new_high_bound) INTO (PARTITION new_partition TABLESPACE new_tablespace,
    PARTITION old_partition)

विभाजन को मर्ज करें

एकल में दो विभाजन मर्ज करें

ALTER TABLE table_name
  MERGE PARTITIONS first_partition, second_partition
  INTO  PARTITION  splitted_partition TABLESPACE new_tablespace

एक विभाजन का आदान-प्रदान

किसी विभाजन को गैर-विभाजित तालिका में बदले / बदले और इसके विपरीत। यह डेटा खंडों के बीच डेटा के एक तेज "चाल" की सुविधा देता है ("डालने ... चयन करें" या "तालिका बनाएं ... जैसा कि चयन करें" के विपरीत) ऑपरेशन DDL है (विभाजन विनिमय ऑपरेशन एक डेटा है वास्तविक डेटा को स्थानांतरित किए बिना शब्दकोश अपडेट) और डीएमएल (बड़े पूर्ववत / फिर से ओवरहेड) नहीं।

सबसे बुनियादी उदाहरण:

  1. एक गैर-विभाजित तालिका (तालिका "बी") को एक विभाजन (तालिका "ए") में बदलें:

तालिका "A" में विभाजन में डेटा नहीं है "OLD_VALUES" और तालिका "B" में डेटा है

ALTER TABLE "A" EXCHANGE PARTITION "OLD_VALUES" WITH TABLE "B";

परिणाम: "OLD_VALES" विभाजन के लिए डेटा "तालिका से" स्थानांतरित "(ऑपरेशन के बाद कोई डेटा नहीं है)"

  1. एक विभाजन को गैर-विभाजित तालिका में बदलें:

तालिका "A" में विभाजन में डेटा "OLD_VALUES" है और तालिका "B" में डेटा नहीं है

ALTER TABLE "A" EXCHANGE PARTITION "OLD_VALUES" WITH TABLE "B";

परिणाम: डेटा को "OLD_VALUES" विभाजन से "स्थानांतरित" किया गया है (तालिका में "ऑपरेशन के बाद कोई डेटा नहीं है")

नोट: इस ऑपरेशन के लिए कुछ अतिरिक्त विकल्प, सुविधाएँ और प्रतिबंध हैं

इस लिंक पर अधिक जानकारी पाई जा सकती है ---> " https://docs.oracle.com/cd/E11882_01/server.112/e25523/part_admin002.htm#i1107555 " (खंड "विभाजन का विस्तार")



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow