खोज…


टिप्पणियों

  • विभाजन विभाजित करें । इस प्रकार का विभाजन किसी दिए गए सीमा के भीतर गिरने वाले स्तंभ मानों के आधार पर विभाजन को पंक्तियाँ प्रदान करता है।

  • सूची विभाजन । RANGE द्वारा विभाजन के समान, सिवाय इसके कि विभाजन को असतत मानों के एक सेट से मेल खाते स्तंभों के आधार पर चुना जाता है।

  • एचएएसएच विभाजन । इस प्रकार के विभाजन के साथ, एक विभाजन को उपयोगकर्ता-परिभाषित अभिव्यक्ति द्वारा लौटाए गए मूल्य के आधार पर चुना जाता है जो तालिका में डाली जाने वाली पंक्तियों में स्तंभ मानों पर काम करता है। फ़ंक्शन में MySQL में मान्य कोई भी अभिव्यक्ति शामिल हो सकती है जो एक nonnegative पूर्णांक मान प्राप्त करता है। इस प्रकार का एक विस्तार LINEAR HASH भी उपलब्ध है।

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

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

एक तालिका जिसे श्रेणी द्वारा विभाजित किया गया है उसे इस तरह से विभाजित किया गया है कि प्रत्येक विभाजन में पंक्तियाँ हैं जिनके लिए विभाजन अभिव्यक्ति मान किसी दिए गए सीमा के भीतर है। पर्वतमालाएं सन्निहित होनी चाहिए, लेकिन अतिव्यापी नहीं होनी चाहिए, और VALUES LESS THAN ऑपरेटर के उपयोग से परिभाषित की जाती हैं। अगले कुछ उदाहरणों के लिए, मान लीजिए कि आप एक तालिका बना रहे हैं जैसे कि 20 वीडियो स्टोर की एक श्रृंखला के लिए कर्मियों के रिकॉर्ड रखने के लिए, 20 के माध्यम से 1 की संख्या:

CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT NOT NULL,
    store_id INT NOT NULL
);

आपकी आवश्यकताओं के आधार पर इस तालिका को कई तरीकों से विभाजित किया जा सकता है। एक तरीका store_id कॉलम का उपयोग करना होगा। उदाहरण के लिए, आप तालिका 4 PARTITION BY RANGE को विभाजन के अनुसार विभाजित करके तय कर सकते हैं जैसे कि यहां दिखाया गया है।

ALTER TABLE employees PARTITION BY RANGE (store_id) (
    PARTITION p0 VALUES LESS THAN (6),
    PARTITION p1 VALUES LESS THAN (11),
    PARTITION p2 VALUES LESS THAN (16),
    PARTITION p3 VALUES LESS THAN MAXVALUE
);

MAXVALUE एक पूर्णांक मान का प्रतिनिधित्व करता है जो हमेशा सबसे बड़े संभव पूर्णांक मान से अधिक होता है (गणितीय भाषा में, यह कम से कम ऊपरी स्तर पर कार्य करता है)।

MySQL के आधिकारिक दस्तावेज पर आधारित है।

सूची विभाजन

सूची विभाजन कई प्रकार से विभाजन विभाजन के समान है। जैसे कि RANGE द्वारा विभाजन में, प्रत्येक विभाजन को स्पष्ट रूप से परिभाषित किया जाना चाहिए। विभाजन के दो प्रकारों के बीच मुख्य अंतर यह है कि, सूची विभाजन में, प्रत्येक विभाजन को परिभाषित सूचियों के एक सेट के बजाय मूल्य सूचियों के एक सेट में एक स्तंभ मान की सदस्यता के आधार पर परिभाषित और चुना जाता है। मान। यह PARTITION BY LIST(expr) का उपयोग करके किया जाता है, जहां expr एक स्तंभ मान या एक स्तंभ मान पर आधारित और एक पूर्णांक मान लौटाता है, और फिर VALUES IN (value_list) माध्यम से प्रत्येक विभाजन को परिभाषित करता है, जहां value_list एक है अल्पविराम-पूर्णांक की सूची।

अनुसरण करने वाले उदाहरणों के लिए, हम मानते हैं कि विभाजन की जाने वाली तालिका की मूल परिभाषा यहाँ दिखाए गए CREATE TABLE विवरण द्वारा प्रदान की गई है:

CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT,
    store_id INT
);

मान लीजिए कि निम्न तालिका में दिखाए गए अनुसार 4 फ्रैंचाइज़ी के बीच 20 वीडियो स्टोर वितरित किए गए हैं।

क्षेत्र स्टोर आईडी नंबर
उत्तर 3, 5, 6, 9, 17
पूर्व 1, 2, 10, 11, 19, 20
पश्चिम 4, 12, 13, 14, 18
केंद्रीय 7, 8, 15, 16

इस तालिका को इस तरह से विभाजित करने के लिए कि एक ही क्षेत्र से संबंधित दुकानों के लिए पंक्तियों को एक ही विभाजन में संग्रहीत किया जाता है

ALTER TABLE employees PARTITION BY LIST(store_id) (
    PARTITION pNorth VALUES IN (3,5,6,9,17),
    PARTITION pEast VALUES IN (1,2,10,11,19,20),
    PARTITION pWest VALUES IN (4,12,13,14,18),
    PARTITION pCentral VALUES IN (7,8,15,16)
);

MySQL के आधिकारिक दस्तावेज पर आधारित है।

एचएएसएच विभाजन

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

निम्न कथन एक तालिका बनाता है जो store_id कॉलम पर हैशिंग का उपयोग करती है और इसे 4 विभाजन में विभाजित किया गया है:

CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT,
    store_id INT
)
PARTITION BY HASH(store_id)
PARTITIONS 4;

यदि आप एक PARTITIONS खंड को शामिल नहीं करते हैं, तो विभाजन की संख्या 1 से चूक जाती है।

MySQL के आधिकारिक दस्तावेज पर आधारित है।



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