โปรโมต 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
โดยไม่มีพาร์ติชันใด ๆ และสคีมาเดียวกันในด้านอื่น ๆ ทั้งหมด แล้วก็สัญญาแลกเปลี่ยนตารางที่มี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;
โปรดทดสอบสิ่งนี้ในห้องทดลองหรือ sqlfiddle ให้มันลอง !!!
ใช่ a PARTITION
คือไฟล์TABLE
. อย่างไรก็ตามต้องใช้คำสั่งพิเศษในการเปลี่ยนพาร์ติชันเป็นตารางหรือในทางกลับกัน
โปรดดู "ตารางที่สามารถเคลื่อนย้ายได้" และตารางล้างตารางสำหรับการส่งออก แก้ไขตาราง ptable DISCARD TABLESPACE; แก้ไขตารางนำเข้าตาราง ptable รายละเอียดแตกต่างกันระหว่าง MySQL 5.6 และ 5.7+
http://mysql.rjweb.org/doc.php/partitionmaint#use_cases_for_partitioning มีลิงก์ไปยังสถานที่สองสามแห่งที่กล่าวถึงเทคนิค