All Products
Search
Document Center

PolarDB:Buat partisi hibrida

Last Updated:Aug 01, 2026

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.

Catatan

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_partition ke ON.

  • 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 p1 dari tabel t1 menggunakan engine CSV, maka file data untuk partisi tersebut diberi nama t1#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 RANGE dan LIST.

  • Operasi DML (termasuk INSERT, UPDATE, DELETE, atau LOAD) 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

loose_hybrid_partition_query_mix_engine_enabled

Global

Menentukan aturan untuk mengkueri tabel partisi hibrida. Nilai yang valid:

  • OFF (default): Saat Anda mengkueri tabel partisi hibrida, kueri mencakup partisi di engine InnoDB dan engine X-Engine.

  • ON: Saat Anda mengkueri tabel partisi hibrida, kueri mencakup partisi di engine InnoDB, engine X-Engine, dan OSS.

loose_polar_dlm_storage_mode

Global

Sakelar untuk fitur pengarsipan data dingin otomatis (DLM). Nilai yang valid:

  • OFF (default): Penyimpanan DLM dinonaktifkan. Penjadwal tidak dijalankan dan tidak ada operasi pengarsipan yang dilakukan.

  • RO (tidak direkomendasikan): Penyimpanan DLM bersifat read-only. Partisi data dingin yang diarsipkan dapat dikueri, tetapi tidak ada operasi penulisan pengarsipan baru yang dilakukan. Nilai ini jarang digunakan di lingkungan produksi.

  • RW (direkomendasikan): Penyimpanan DLM bersifat read-write. Penjadwal dijalankan dan mendukung pengarsipan otomatis berdasarkan kebijakan DLM, serta data yang diarsipkan juga dapat dikueri.

Catatan
  • Parameter ini hanya berlaku untuk kluster MySQL 8.0.2 dengan versi revisi 8.0.2.2.34.1 atau lebih baru.

  • Setelah Anda mengaktifkan pengarsipan data dingin, sistem secara otomatis mengatur parameter ini ke RW. Tidak diperlukan modifikasi manual.

  • Jika Anda hanya menggunakan engine kompresi tinggi X-Engine untuk mengarsipkan tabel partisi (tanpa pengarsipan data dingin OSS), Anda harus mengatur parameter ini secara manual ke RW untuk mengaktifkan penjadwalan DLM.

loose_allow_create_hybrid_partition

Global

Mengontrol apakah pembuatan atau pengarsipan tabel partisi yang berisi partisi non-InnoDB diizinkan. Nilai yang valid:

  • OFF (default): Pembuatan tabel partisi yang berisi partisi non-InnoDB dilarang. Semua partisi harus menggunakan engine InnoDB.

  • ON (direkomendasikan): Pembuatan tabel partisi yang berisi partisi non-InnoDB diizinkan. Anda dapat menentukan OSS (CSV/ORC) atau engine X-Engine pada tingkat partisi.

Catatan
  • Parameter ini hanya berlaku untuk kluster MySQL 8.0.2 dengan versi revisi 8.0.2.2.34.1 atau lebih baru.

  • Setelah Anda mengaktifkan pengarsipan data dingin, sistem mungkin secara otomatis mengatur parameter ini ke ON tergantung pada versinya.

loose_use_oss_meta

Global / Session

Mengontrol apakah manajemen metadata OSS (meta) diaktifkan untuk tabel OSS. Parameter loose_csv_oss_file_filter bergantung pada parameter ini. Nilai yang valid:

  • ON: Manajemen metadata OSS diaktifkan. Informasi meta ditulis saat tabel OSS dibuat atau diarsipkan. Daftar file kemudian diambil dengan membaca metadata, dan fitur penyaringan loose_csv_oss_file_filter didukung.

  • OFF: Manajemen metadata OSS dinonaktifkan. Tidak ada informasi meta yang ditulis. Metadata diperoleh dengan langsung mendaftar file OSS, dan loose_csv_oss_file_filter tidak didukung.

loose_csv_oss_file_filter

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 loose_use_oss_meta diaktifkan. Nilai yang valid:

  • OFF: Penyaringan file dinonaktifkan. Semua file data dalam tabel OSS dipindai selama kueri.

  • ON (direkomendasikan): Penyaringan file diaktifkan. Selama kueri, loose_csv_oss_file_filter digunakan bersama kondisi WHERE untuk meningkatkan kinerja kueri.

dlm_prune_archiving_oss_partitions

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:

  • ON (default, direkomendasikan): Operasi DML (UPDATE/DELETE) secara otomatis memangkas partisi yang sedang diarsipkan ke OSS.

  • OFF: Operasi DML tidak secara otomatis memangkas partisi yang sedang diarsipkan ke OSS.

hybrid_partition_query_mix_engine_enabled

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:

  • OFF (default, direkomendasikan): Kueri secara otomatis memangkas partisi OSS.

  • ON (tidak direkomendasikan): Kueri tidak secara otomatis memangkas partisi OSS.

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>"}');
Catatan

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 my_oss_sts_token memiliki waktu kedaluwarsa default. Jika my_oss_sts_token telah kedaluwarsa, Anda perlu mengatur ulang semua nilai parameter dalam EXTRA_SERVER_INFO menggunakan perintah berikut.

ALTER SERVER server_name 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>"}');

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_enabled ke 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_enabled ke 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);