MySQL टेबल पार्टीशन को टेबल पर प्रमोट करें
मेरा Google खोज कौशल इसका हल खोजने के लिए पर्याप्त नहीं था। यदि संभव हो, तो मैं एक टेबल पर एक टेबल पर एक विभाजन को कैसे बढ़ावा दे सकता हूं?
के मेरे पास है मान लेते हैं part0
, part1
और part2
। क्या कोई ALTER TABLE
ऐसा है जिसे मैं part0
एक नई तालिका में परिवर्तित कर सकता हूं ?
मेरी विचार प्रक्रिया थी, क्योंकि डेटा पहले से ही डिस्क पर एक अलग फ़ाइल में मौजूद है, तालिका निर्माण प्रक्रिया एक SELECT
क्वेरी का उपयोग करके एक नई तालिका बनाने की तुलना में तेज हो सकती है ।
जवाब
आपको जरूरत नहीं है SELECT
। यह शुद्ध डीडीएल के साथ किया जा सकता है।
इस उदाहरण के लिए, मान लें कि विभाजन तालिका निम्नानुसार है:
- डेटाबेस
mydb
- तालिका
mytable
- विभाजन (
part0
,part1
,part2
)
यह मुश्किल हो सकता है लेकिन यहाँ जाता है
USE mydb
CREATE TABLE mynewtable LIKE mytable;
ALTER TABLE mynewtable REMOVE PARTITIONING;
ALTER TABLE mytable
EXCHANGE PARTITION p0
WITH TABLE mynewtable
WITHOUT VALIDATION
;
ALTER TABLE mytable DROP PARTITION p0;
यह क्या करता है पहले mynewtable
बिना किसी विभाजन के और सभी अन्य पहलुओं में समान स्कीमा। फिर, यह mynewtable
तालिका को स्वैप करता है part0
।
अगर आपको इस पर यकीन नहीं है, तो दौड़िए
USE mydb
CREATE TABLE mynewtable LIKE mytable;
ALTER TABLE mynewtable REMOVE PARTITIONING;
ALTER TABLE mytable
EXCHANGE PARTITION p0
WITH TABLE mynewtable
WITHOUT VALIDATION
;
पंक्तियों की जाँच करें mynewtable
और नया part0
और सुनिश्चित करें
mynewtable
मूल से डेटा हैpart0
- नया
part0
खाली होना चाहिए
एक बार जब आप सुनिश्चित कर लें कि ट्रांसपोज़न ने काम किया है तो चलाएं
ALTER TABLE mytable DROP PARTITION p0;
कृपया इसे एक प्रयोगशाला या वर्गफल में परीक्षण करें। इसे आज़माइए !!!
हाँ, एक PARTITION
है TABLE
। हालाँकि, किसी पार्टीशन को टेबल में बदलने या इसके विपरीत कुछ विशेष कमांड्स लगते हैं।
निर्यात के लिए "परिवहनीय टेबलस्पेस" और फ़्लश टेबल पेबल देखें; टेटर टेबलटेबल DISCARD TABLESPACE; अन्य टेबल पाइबल आयात तालिकाएँ। विवरण MySQL 5.6 और 5.7+ के बीच भिन्न हैं।
http://mysql.rjweb.org/doc.php/partitionmaint#use_cases_for_partitioning कुछ स्थानों के लिंक हैं जो तकनीकों पर चर्चा करते हैं।