2009-10-16 14 views
46

मैंने प्रलेखन (http://dev.mysql.com/doc/refman/5.1/en/partitioning.html) पढ़ा है, लेकिन मैं अपने शब्दों में, यह क्या है और इसका उपयोग क्यों किया जाता है।MYSQL विभाजन क्या है?

  1. क्या यह मुख्य रूप से एकाधिक सर्वरों के लिए उपयोग किया जाता है, इसलिए यह एक सर्वर को नहीं खींचता है?
  2. तो, डेटा का हिस्सा सर्वर 1 पर होगा, और डेटा का हिस्सा सर्वर 2 पर होगा। और सर्वर 3 सर्वर 1 या server2 पर "इंगित करेगा" ... यह है कि यह कैसे काम करता है?
  3. MYSQL दस्तावेज़ उसी सर्वर के भीतर विभाजन पर क्यों केंद्रित है ... यदि उद्देश्य इसे सर्वरों में फैलाना है?

उत्तर

122

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

the MySQL Documentation से सरल उदाहरण:

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 RANGE (YEAR(separated)) (
    PARTITION p0 VALUES LESS THAN (1991), 
    PARTITION p1 VALUES LESS THAN (1996), 
    PARTITION p2 VALUES LESS THAN (2001), 
    PARTITION p3 VALUES LESS THAN MAXVALUE 
); 

यह जैसे तेजी लाने के लिए अनुमति देता है:

  1. सरल से पुराने डेटा गिराने:

    ALTER TABLE employees DROP PARTITION p0; 
    
  2. डाटाबेस एक प्रश्न में तेजी लाने के कर सकते हैं इस तरह:

    SELECT COUNT(*) 
    FROM employees 
    WHERE separated BETWEEN '2000-01-01' AND '2000-12-31' 
    GROUP BY store_id; 
    

यह जानकर कि सभी डेटा केवल पी 2 विभाजन पर संग्रहीत है।

+2

# 2 को "छंटनी" कहा जाता है – longneck

+17

यह इंटरनेट पर विभाजन पर सबसे अच्छा स्पष्टीकरण है। –

संबंधित मुद्दे