โปรโมต MySQL Table Partition เป็น Table
ทักษะการค้นหา Google ของฉันไม่เพียงพอที่จะหาวิธีแก้ปัญหานี้ ถ้าเป็นไปได้ฉันจะเลื่อนพาร์ติชันบนโต๊ะเป็นตารางได้อย่างไร?
สมมติว่าผมมีpart0, และpart1 part2มีอะไรALTER TABLEที่ฉันสามารถแปลงpart0เป็นตารางใหม่ได้หรือไม่?
กระบวนการคิดของฉันคือเนื่องจากข้อมูลมีอยู่แล้วในไฟล์แยกต่างหากบนดิสก์กระบวนการสร้างตารางอาจเร็วกว่าการสร้างตารางใหม่โดยใช้SELECTแบบสอบถาม
คำตอบ
SELECTคุณไม่จำเป็นต้อง ซึ่งสามารถทำได้ด้วย DDL ที่บริสุทธิ์
สำหรับตัวอย่างนี้สมมติว่าตารางที่แบ่งพาร์ติชันเป็นดังนี้:
- ฐานข้อมูล
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โดยไม่มีพาร์ติชันใด ๆ และสคีมาเดียวกันในด้านอื่น ๆ ทั้งหมด แล้วก็สัญญาแลกเปลี่ยนตารางที่มีmynewtablepart0
หากคุณไม่แน่ใจในเรื่องนี้ให้เรียกใช้
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;
โปรดทดสอบสิ่งนี้ในห้องทดลองหรือ sqlfiddle ให้มันลอง !!!
ใช่ a PARTITIONคือไฟล์TABLE. อย่างไรก็ตามต้องใช้คำสั่งพิเศษในการเปลี่ยนพาร์ติชันเป็นตารางหรือในทางกลับกัน
โปรดดู "ตารางที่สามารถเคลื่อนย้ายได้" และตารางล้างตารางสำหรับการส่งออก แก้ไขตาราง ptable DISCARD TABLESPACE; แก้ไขตารางนำเข้าตาราง ptable รายละเอียดแตกต่างกันระหว่าง MySQL 5.6 และ 5.7+
http://mysql.rjweb.org/doc.php/partitionmaint#use_cases_for_partitioning มีลิงก์ไปยังสถานที่สองสามแห่งที่กล่าวถึงเทคนิค