2012-10-17 12 views
11

मैं डाइविंग गहरे और गहरे में MySQL विशेषताएं हूँ, और अगले एक मैं बाहर कोशिश कर रहा हूँ तालिका विभाजन हैविभाजन और अद्यतन

मूल रूप से उनके बारे में सिर्फ एक ही सवाल, जहां मैं एक स्पष्ट उत्तर नहीं मिल सका है अभी तक:

यदि आप एक पंक्ति को अद्यतन करते हैं, तो क्या पंक्ति को किसी अन्य विभाजन के विभाजन की स्थिति पूरी होने पर स्वचालित रूप से दूसरे विभाजन में स्थानांतरित कर दिया जाएगा? (उदाहरण के लिए, विभाजन क्षेत्र द्वारा विभाजित होते हैं, और क्षेत्र क्षेत्र ए से क्षेत्र बी में बदल जाता है)

और यदि यह स्वचालित रूप से नहीं होता है, तो मुझे पंक्ति को स्थानांतरित करने के लिए क्या करने की आवश्यकता है विभाजन ए विभाजन बी? (और ऐसा करने से प्रदर्शन प्रदर्शन होगा?)

मैं क्या करना चाहता हूं, तालिका के एक अलग विभाजन में 'हटाए गए' (ध्वज) सूचनाओं को स्थानांतरित करना है, क्योंकि उन्हें शायद ही कभी बुलाया जाएगा। क्या वह आम तौर पर एक अच्छा विचार होगा या क्या यह सब कुछ छोड़ने के लिए बेहतर होगा (शायद किसी दिन विशाल - कई मिलियन पंक्तियां) तालिका?

उत्तर

17

इसे अद्यतन पर ले जाना चाहिए। अगर ऐसा नहीं होता तो यह अच्छा काम नहीं करेगा। MySQL को मूल रूप से प्रत्येक क्वेरी पर सभी विभाजनों को स्कैन करना होगा क्योंकि यह नहीं पता था कि रिकॉर्ड कहां संग्रहीत किए गए हैं।

मैं भी किया था कुछ परीक्षण (MySQL 5.6 पर के रूप में है कि पहले संस्करण जहां यह क्या partions क्वेरी करने के लिए निर्दिष्ट करना संभव है)

CREATE TABLE test (
    id int 
) 
PARTITION BY RANGE (id) (
    PARTITION p1 VALUES LESS THAN (1000), 
    PARTITION p2 VALUES LESS THAN MAXVALUE); 

INSERT INTO test VALUES (1); -- now on partition p1 

SELECT * FROM test PARTITION(p1); 
+------+ 
| id | 
+------+ 
| 1 | 
+------+ 
1 row in set (0.00 sec) 

SELECT * FROM test PARTITION(p2); 
Empty set (0.00 sec) 

UPDATE test SET id = 1001; -- now on partition p2 

SELECT * FROM test PARTITION (p1); 
Empty set (0.00 sec) 

SELECT * FROM test PARTITION (p2); 
+------+ 
| id | 
+------+ 
| 1001 | 
+------+ 
1 row in set (0.00 sec) 

यह immediatly अद्यतन के बाद पता है कि उस पंक्ति पर है स्पष्ट है विभाजन पी 2।

+1

मैं उम्मीद कर रहा था कि यह इस तरह से काम करेगा, धन्यवाद! मुझे बस यकीन नहीं था क्योंकि मैं दस्तावेज़ों में इसका उल्लेख नहीं कर सका। – Katai

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