MySQL टेबल पार्टीशन को टेबल पर प्रमोट करें

Aug 17 2020

मेरा Google खोज कौशल इसका हल खोजने के लिए पर्याप्त नहीं था। यदि संभव हो, तो मैं एक टेबल पर एक टेबल पर एक विभाजन को कैसे बढ़ावा दे सकता हूं?

के मेरे पास है मान लेते हैं part0, part1और part2। क्या कोई ALTER TABLEऐसा है जिसे मैं part0एक नई तालिका में परिवर्तित कर सकता हूं ?

मेरी विचार प्रक्रिया थी, क्योंकि डेटा पहले से ही डिस्क पर एक अलग फ़ाइल में मौजूद है, तालिका निर्माण प्रक्रिया एक SELECTक्वेरी का उपयोग करके एक नई तालिका बनाने की तुलना में तेज हो सकती है ।

जवाब

RolandoMySQLDBA Aug 17 2020 at 23:04

आपको जरूरत नहीं है SELECT। यह शुद्ध डीडीएल के साथ किया जा सकता है।

इस उदाहरण के लिए, मान लें कि विभाजन तालिका निम्नानुसार है:

  1. डेटाबेस mydb
  2. तालिका mytable
  3. विभाजन ( 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;

कृपया इसे एक प्रयोगशाला या वर्गफल में परीक्षण करें। इसे आज़माइए !!!

RickJames Aug 17 2020 at 21:54

हाँ, एक PARTITIONहै TABLE। हालाँकि, किसी पार्टीशन को टेबल में बदलने या इसके विपरीत कुछ विशेष कमांड्स लगते हैं।

निर्यात के लिए "परिवहनीय टेबलस्पेस" और फ़्लश टेबल पेबल देखें; टेटर टेबलटेबल DISCARD TABLESPACE; अन्य टेबल पाइबल आयात तालिकाएँ। विवरण MySQL 5.6 और 5.7+ के बीच भिन्न हैं।

http://mysql.rjweb.org/doc.php/partitionmaint#use_cases_for_partitioning कुछ स्थानों के लिंक हैं जो तकनीकों पर चर्चा करते हैं।