Seiring pertumbuhan data bisnis, menyimpan seluruh data—termasuk data hangat dan dingin yang jarang diakses—dalam tabel InnoDB standar menyebabkan biaya penyimpanan terus meningkat. Di sisi lain, mengarsipkan data tersebut ke penyimpanan eksternal mengorbankan kemampuan akses baca, tulis, dan analitis secara online. PolarDB for MySQL menyediakan tiering data berbasis X-Engine. Anda dapat mengonversi seluruh tabel atau partisi tertentu dalam suatu tabel ke X-Engine berkompresi tinggi, sehingga InnoDB (data panas) dan X-Engine (data hangat atau dingin) dapat berada dalam satu tabel yang sama. Pendekatan ini mengurangi biaya penyimpanan sekaligus mempertahankan akses data online, dan data dalam X-Engine tetap mendukung operasi DML serta perubahan skema DDL online.
Cara kerja
Fitur partisi hibrida dari PolarDB for MySQL memungkinkan partisi-partisi berbeda dalam satu tabel partisi menggunakan mesin penyimpanan yang berbeda. Fitur ini bekerja sebagai berikut:
Tiering data: Simpan partisi data "panas" yang sering diakses di engine InnoDB untuk performa baca-tulis optimal, dan migrasikan partisi data "hangat" atau "dingin" yang jarang diakses ke engine X-Engine.
Perutean cerdas: Saat Anda melakukan kueri terhadap tabel tersebut, PolarDB secara otomatis mengarahkan permintaan ke partisi yang sesuai beserta mesin penyimpanannya berdasarkan kondisi kueri. Seluruh proses ini transparan bagi lapisan aplikasi.
Rasio kompresi tinggi: Engine X-Engine, melalui algoritma kompresi canggihnya dan format column store opsional, memberikan rasio kompresi data yang sangat tinggi. Hal ini secara signifikan mengurangi penggunaan penyimpanan fisik dan menekan biaya.
Lingkup penerapan
Sebelum menggunakan fitur ini, pastikan kluster PolarDB for MySQL Anda memenuhi persyaratan versi berikut.
Mengarsipkan tabel standar:
MySQL 8.0.1 dengan revisi 8.0.1.1.31 atau lebih baru.
MySQL 8.0.2 dengan revisi 8.0.2.2.12 atau lebih baru.
Mengarsipkan tabel partisi: MySQL 8.0.2 dengan revisi 8.0.2.2.12 atau lebih baru.
Mengarsipkan ke tabel column-store X-Engine: MySQL 8.0.2 dengan revisi 8.0.2.2.34.1 atau lebih baru.
Persiapan
Sebelum mulai mengarsipkan data, lengkapi persiapan berikut.
Aktifkan X-Engine: Jadikan tersedia sebagai opsi mesin penyimpanan untuk tabel atau partisi.
Untuk mengarsipkan tabel partisi sebagai tabel partisi hibrida, kondisi berikut harus dipenuhi:
-
MySQL 8.0.2 dan versi minornya 8.0.2.2.34.1 atau lebih baru. Anda harus mengatur parameter
loose_allow_create_hybrid_partitionkeON. -
MySQL 8.0.2 dan versi minornya lebih awal dari 8.0.2.2.34.1. Lakukan upgrade ke versi minor yang lebih baru.
-
Arsipkan tabel standar
Konversi data dan mesin penyimpanan seluruh tabel non-partisi dari InnoDB ke X-Engine.
Sintaks
ALTER TABLE table_name ENGINE=engine_name[ TABLE_FORMAT=COLUMN];Parameter
Parameter | Deskripsi |
table_name | Nama tabel yang akan diarsipkan ke X-Engine. |
engine_name | Nama mesin penyimpanan.
|
TABLE_FORMAT | Opsional. Format penyimpanan data X-Engine.
|
Contoh
Arsipkan tabel standar
t1ke tabel berorientasi baris X-Engine:ALTER TABLE t1 ENGINE=XEngine;Arsipkan tabel standar
t1ke tabel berorientasi kolom X-Engine:ALTER TABLE t1 ENGINE=XEngine TABLE_FORMAT=COLUMN;Kembalikan tabel standar
t1ke engine InnoDB:ALTER TABLE t1 ENGINE=InnoDB;
Arsipkan tabel partisi
Arsipkan partisi tertentu
Arsipkan partisi tertentu dalam tabel partisi—biasanya partisi lama yang menyimpan data dingin—ke X-Engine. Hal ini menerapkan penyimpanan tiered untuk data panas dan dingin, dan tabel hasilnya menjadi tabel partisi hibrida.
Sintaks
ALTER TABLE table_name CHANGE PARTITION part_name ENGINE = XEngine[ TABLE_FORMAT=COLUMN];Parameter
Parameter | Deskripsi |
table_name | Nama tabel yang akan diarsipkan ke X-Engine. |
part_name | Nama partisi yang akan diarsipkan ke X-Engine. |
TABLE_FORMAT | Opsional. Format penyimpanan data X-Engine.
|
Contoh
Arsipkan partisi
p1dari tabel partisit1ke format row store X-Engine:ALTER TABLE t1 CHANGE PARTITION p1 ENGINE = XEngine;Arsipkan partisi
p1dari tabel partisit1ke tabel berorientasi kolom X-Engine:ALTER TABLE t1 CHANGE PARTITION p1 ENGINE = XEngine TABLE_FORMAT=COLUMN;
Kembalikan ke engine InnoDB
Sintaks
ALTER TABLE table_name REORGANIZE PARTITION part_name INTO (partition_definition);Parameter
Parameter | Deskripsi |
table_name | Nama tabel partisi hibrida. |
part_name | Nama partisi yang akan dikembalikan ke engine InnoDB. |
partition_definition | Harus konsisten dengan Catatan Klausa ENGINE dalam definisi partisi bersifat opsional. Jika nama engine tidak ditentukan, engine default yang digunakan adalah InnoDB, sama seperti tabel induknya. Jika |
Contoh
Kembalikan data yang disimpan dalam partisi p1 dari tabel partisi t1 yang sebelumnya diarsipkan ke X-Engine kembali ke engine InnoDB.
ALTER TABLE t1 REORGANIZE PARTITION p1 INTO(PARTITION p1 VALUES LESS THAN(100));Penerapan di lingkungan produksi
Praktik terbaik: Arsipkan hanya data hangat dan dingin dengan frekuensi akses rendah ke X-Engine untuk mencapai keseimbangan optimal antara biaya dan performa kueri. Untuk data yang intensif tulis dengan potensi kompresi tinggi (seperti log dan data instrumentasi), pilih format column store X-Engine (
TABLE_FORMAT=COLUMN).Mitigasi risiko: Migrasi data (
ALTER TABLE) merupakan operasi yang intensif resource. Meskipun berjalan secara online, kami merekomendasikan untuk melakukannya pada jam sepi guna menghindari fluktuasi performa pada beban kerja produksi.Pemantauan dan peringatan: Selama proses pengarsipan, Anda dapat menjalankan
SHOW FULL PROCESSLIST;untuk melacak progres operasi DDL. Secara bersamaan, pantau secara ketat metrik utama seperti penggunaan CPU, IOPS, dan kapasitas disk kluster di Konsol.