All Products
Search
Document Center

PolarDB:Pembagian Kunci

Last Updated:Mar 29, 2026

Gunakan Pembagian Kunci ketika kunci partisi alami Anda berupa string, tanggal, atau kolom komposit. Berbeda dengan pembagian HASH yang memerlukan ekspresi integer, Pembagian Kunci mendukung tipe kolom non-integer dan kunci partisi multi-kolom—sehingga lebih sesuai untuk sebagian besar skema dunia nyata.

Catatan

Algoritma perutean untuk Pembagian Kunci di PolarDB-X menggunakan MurmurHash3, yang berbeda dari algoritma Pembagian Kunci MySQL.

Perbedaan Pembagian Kunci dan Pembagian HASH

PerilakuPembagian KunciPembagian HASH
Kunci partisi wajibTidak — jika kunci partisi tidak ditentukan, kunci primary digunakan secara default; jika tidak ada kunci primary, kunci unik akan digunakanYa — harus menentukan ekspresi atau kolom integer
Kunci partisi multi-kolomDidukung (kunci partisi vektor)Tidak didukung
Tipe data yang didukungINT, STRING, DATE, DATETIME (dan subtipenya)Hanya tipe integer
Fungsi partisiTidak didukungDidukung

Untuk perbandingan lengkap, lihat Perbandingan antara Pembagian Kunci dan Pembagian HASH.

Sintaksis

CREATE TABLE ...
PARTITION BY KEY(partition_column_list)
PARTITIONS number;

partition_column_list:
  column_name [, column_name ...]
ParameterDeskripsi
partition_column_listSatu atau beberapa kolom yang digunakan sebagai kunci partisi. Jika tidak ditentukan, kunci primary akan digunakan. Jika tidak ada kunci primary, kunci unik akan digunakan.
numberJumlah partisi. Maksimum: 8.192.

Contoh

Kunci partisi satu kolom

Buat partisi tabel berdasarkan kolom id menjadi 8 partisi:

CREATE TABLE tb_k(
  id bigint NOT NULL AUTO_INCREMENT,
  bid int,
  name varchar(30),
  birthday datetime NOT NULL,
  PRIMARY KEY(id)
)
PARTITION BY KEY(id)
PARTITIONS 8;

Kunci partisi vektor (multi-kolom)

Gunakan bid dan id sebagai kunci partisi dua kolom, dengan 8 partisi:

CREATE TABLE tb_k(
  id bigint NOT NULL AUTO_INCREMENT,
  bid int,
  name varchar(30),
  birthday datetime NOT NULL,
  PRIMARY KEY(id)
)
PARTITION BY KEY(bid, id)
PARTITIONS 8;
Penting

Dengan kunci partisi vektor, hanya kolom pertama (bid dalam contoh ini) yang menentukan ke partisi mana suatu baris ditempatkan. Kolom sisanya (id) tidak digunakan untuk perutean—keberadaannya bertujuan mendukung pemisahan partisi data panas. Pemangkasan partisi berlaku ketika kueri mencakup kondisi kesetaraan pada kolom utama (bid).

Batasan

Tipe data yang didukung

KategoriTipe
IntegerBIGINT, BIGINT UNSIGNED, INT, INT UNSIGNED, MEDIUMINT, MEDIUMINT UNSIGNED, SMALLINT, SMALLINT UNSIGNED, TINYINT, TINYINT UNSIGNED
Tanggal dan waktuDATETIME, DATE, TIMESTAMP
StringCHAR, VARCHAR, BINARY
Titik tetapDECIMAL (digit pecahan harus 0)

Batasan lainnya

  • Pembagian Kunci tidak mendukung fungsi partisi.

  • Secara default, tabel terpartisi dapat memiliki maksimal 8.192 partisi.

  • Secara default, kunci partisi dapat mencakup maksimal lima kolom.

Distribusi data

Pembagian Kunci menggunakan MurmurHash3, yang memiliki tingkat tabrakan hash rendah dan performa tinggi. Distribusi di seluruh partisi menjadi seimbang ketika kunci partisi memiliki lebih dari 3.000 nilai unik; semakin banyak nilai unik, distribusinya semakin merata.