Anda dapat membuat tabel partisi hibrida untuk mengakses data yang disimpan di berbagai mesin penyimpanan.
Diagram berikut mengilustrasikan cara kerja partisi hibrida.
Partisi hibrida memisahkan data panas dan data dingin dengan menyimpan partisi tabel pada media penyimpanan yang berbeda. Pendekatan ini mengurangi biaya penyimpanan untuk data dingin tanpa memengaruhi kinerja kueri atau operasi DML pada data panas.
Untuk mengarsipkan tabel partisi sebagai tabel partisi hibrida, kondisi berikut harus terpenuhi:
-
MySQL 8.0.2 dan versi minornya adalah 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 lama dari 8.0.2.2.34.1. Lakukan upgrade ke versi minor yang lebih baru.
Prasyarat
Kluster Anda harus menjalankan PolarDB for MySQL 8.0.2 dengan versi revisi 8.0.2.2.34.1 atau lebih baru. Anda dapat melihat nomor versi untuk memeriksa versi kluster Anda.
File data untuk partisi yang ingin Anda buat harus sudah ada di OSS, dan nama file tersebut harus mengikuti aturan berikut:
Ekstensi file dan penanda partisi harus dalam huruf kapital.
Nama tabel dan partisi harus sesuai dengan yang ada di database.
Misalnya, jika partisi
p1dari tabelt1menggunakan engine CSV, maka file data untuk partisi tersebut diberi namat1#P#p1.CSV.Tabel partisi yang diarsipkan melalui pengarsipan data dingin dapat diarsipkan sebagai tabel partisi hibrida.
Batasan
Tabel partisi hibrida harus memiliki setidaknya satu partisi yang menggunakan Mesin penyimpanan InnoDB. Mesin tingkat tabel harus InnoDB.
Saat Anda membuat tabel partisi hibrida dengan subpartisi, mesin partisi tingkat pertama harus sesuai dengan mesin tabel, dan setidaknya satu subpartisi harus menggunakan Mesin penyimpanan InnoDB.
Tabel partisi hibrida hanya mendukung tipe partisi
RANGEdanLIST.Operasi DML (termasuk
INSERT,UPDATE,DELETE, atauLOAD) tidak didukung pada partisi OSS dalam tabel partisi hibrida.
Parameter
Saat menggunakan tabel partisi hibrida, Anda dapat mengonfigurasi parameter berikut pada halaman Parameters kluster PolarDB sesuai kebutuhan bisnis Anda.
Parameter | Tingkat | Deskripsi |
| Global | Menentukan aturan untuk mengkueri tabel partisi hibrida. Nilai yang valid:
|
| Global | Sakelar untuk fitur pengarsipan data dingin otomatis (DLM). Nilai yang valid:
Catatan
|
| Global | Mengontrol apakah pembuatan atau pengarsipan tabel partisi yang berisi partisi non-InnoDB diizinkan. Nilai yang valid:
Catatan
|
| Global / Session | Mengontrol apakah manajemen metadata OSS (meta) diaktifkan untuk tabel OSS. Parameter
|
| Global / Session | Mengontrol apakah penyaringan tingkat file (File Filter) diaktifkan saat mengkueri tabel OSS. Fitur ini menggunakan statistik min/maks dan filter Bloom untuk melewatkan file data yang tidak relevan dan mengurangi jumlah data OSS yang dipindai. Fitur ini memerlukan parameter
|
| Global / Session | Sakelar untuk pemangkasan otomatis partisi OSS yang diarsipkan oleh fitur Data Lifecycle Management (DLM). Saat operasi DML (UPDATE/DELETE) dieksekusi, sistem secara otomatis memangkas partisi yang sedang diarsipkan ke OSS (ORC/CSV) dan partisi yang telah diarsipkan ke OSS. Hal ini mencegah operasi DML diblokir oleh proses pengarsipan dan menyelesaikan konflik antara DML dan DDL. Nilai yang valid:
|
| Global / Session | Sakelar untuk pemangkasan kueri otomatis. Saat kueri SELECT dieksekusi, sistem secara otomatis memangkas partisi OSS (ORC/CSV) untuk mencegah kueri lambat akibat akses ke data dingin. Nilai yang valid:
|
Buat partisi hibrida
Untuk membuat tabel partisi hibrida, Anda memerlukan server OSS. Jika belum memilikinya, gunakan sintaks berikut untuk membuatnya:
CREATE SERVER oss_server_name
FOREIGN DATA WRAPPER oss
OPTIONS(EXTRA_SERVER_INFO '{"oss_endpoint": "<my_oss_endpoint>",
"oss_bucket": "<my_oss_bucket>", "oss_access_key_id": "<my_oss_access_key_id>",
"oss_access_key_secret": "<my_oss_access_key_secret>", "oss_prefix":"<my_oss_prefix>", "oss_sts_token": "<my_oss_sts_token>"}');Jika versi kluster adalah PolarDB for MySQL 8.0.2 dan versi revisinya 8.0.2.2.6 atau lebih baru, parameter my_oss_sts_token didukung.
Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter | Tipe | Deskripsi |
oss_server_name | string | Nama server OSS. Catatan Parameter ini bersifat global dan harus unik. Nama tidak memperhatikan huruf besar/kecil dan dapat memiliki panjang maksimal 64 karakter. Nama yang lebih panjang dari 64 karakter akan dipotong. Anda dapat menentukan nama server OSS sebagai string yang diapit tanda kutip. |
my_oss_endpoint | string | Titik akhir Wilayah OSS. Catatan Jika Anda mengakses database dari host Alibaba Cloud, gunakan Titik akhir internal untuk menghindari biaya traffic internet. Titik akhir internal biasanya mengandung kata "internal". |
my_oss_bucket | string | Bucket OSS yang berisi file data. Bucket ini harus sudah ada di OSS. |
my_oss_access_key_id | string | ID AccessKey untuk mengakses OSS. |
my_oss_access_key_secret | string | Rahasia AccessKey untuk mengakses OSS. |
my_oss_prefix | string | Awal path untuk file data di OSS. Nilai ini tidak boleh kosong atau mengandung karakter khusus. |
my_oss_sts_token | string | Kredensial akses sementara OSS. Untuk detail tentang cara memperoleh kredensial akses sementara OSS, lihat Peroleh kredensial akses sementara. Catatan Nilai parameter |
Contoh berikut menunjukkan cara membuat tabel partisi hibrida:
CREATE TABLE t2(a1 INT, a2 VARCHAR(30), a3 VARCHAR(256))
CONNECTION = "oss_server_name"
PARTITION BY RANGE(a1)
(
PARTITION p1 values less than (1000) ENGINE = CSV,
PARTITION p2 values less than (2000) ENGINE = CSV,
PARTITION p3 values less than (3000) ENGINE = INNODB
);Kueri partisi hibrida
Anda dapat mengkueri partisi pada berbagai mesin penyimpanan dengan tiga cara:
Atur parameter
hybrid_partition_query_mix_engine_enabledke ON. Kueri kemudian mengembalikan data dari partisi InnoDB, X-Engine, dan OSS. Contoh:-- t1 adalah tabel partisi hibrida. SELECT * FROM t1;Atur parameter
hybrid_partition_query_mix_engine_enabledke OFF. Kueri kemudian hanya mengembalikan data dari partisi InnoDB dan X-Engine. Contoh:-- t1 adalah tabel partisi hibrida. SELECT * FROM t1;Kueri partisi tertentu berdasarkan namanya. Hal ini mengambil data dari partisi yang ditentukan, terlepas dari mesin penyimpanannya. Contoh:
-- t1 adalah tabel partisi hibrida, dan p1 adalah nama partisi yang akan dikueri. SELECT * FROM t1 partition (p1);