Promosikan Partisi Tabel MySQL ke Tabel
Keterampilan Google Penelusuran saya tidak cukup untuk menemukan solusi untuk ini. Jika memungkinkan, bagaimana cara mempromosikan partisi pada tabel menjadi tabel sendiri?
Mari kita asumsikan saya memiliki part0
, part1
, dan part2
. Apakah ada ALTER TABLE
yang bisa saya berikan yang dikonversi part0
ke tabel baru?
Proses pemikiran saya adalah, karena data sudah ada di file terpisah di disk, proses pembuatan tabel mungkin lebih cepat daripada membuat tabel baru menggunakan SELECT
kueri.
Jawaban
Anda tidak perlu SELECT
. Ini dapat dilakukan dengan DDL murni.
Untuk contoh ini, katakanlah tabel yang dipartisi adalah sebagai berikut:
- Database
mydb
- Meja
mytable
- Partisi (
part0
,part1
,part2
)
Ini bisa jadi rumit tapi ini dia
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;
Apa yang dilakukannya adalah membuat pertama mynewtable
tanpa partisi dan skema yang sama di semua aspek lainnya. Kemudian, itu menukar mynewtable
tabel dengan part0
.
Jika Anda tidak yakin tentang ini, jalankan
USE mydb
CREATE TABLE mynewtable LIKE mytable;
ALTER TABLE mynewtable REMOVE PARTITIONING;
ALTER TABLE mytable
EXCHANGE PARTITION p0
WITH TABLE mynewtable
WITHOUT VALIDATION
;
Periksa baris dalam mynewtable
dan yang baru part0
dan pastikan
mynewtable
memiliki data dari aslinyapart0
- Yang baru
part0
harus kosong
Setelah Anda yakin transposisi berfungsi, jalankan
ALTER TABLE mytable DROP PARTITION p0;
Silakan uji ini di lab atau sqlfiddle. COBALAH !!!
Ya, PARTITION
adalah a TABLE
. Namun, dibutuhkan beberapa perintah khusus untuk mengubah partisi menjadi tabel atau sebaliknya.
Lihat "ruang meja yang dapat dipindahkan" dan tabel FLUSH TABEL UNTUK EKSPOR; ALTER TABLE ptable Buang TABEL; ALTER TABLE ptable IMPORT TABLESPACE. Detailnya berbeda antara MySQL 5.6 dan 5.7+.
http://mysql.rjweb.org/doc.php/partitionmaint#use_cases_for_partitioning memiliki tautan ke beberapa tempat yang membahas teknik.