全部产品
Search
文档中心

PolarDB:Pembagian Kunci

更新时间:Jul 06, 2025

Pembagian Kunci mirip dengan Pembagian Hash, yang membagi data berdasarkan algoritma penghashan konsisten bawaan PolarDB-X. Algoritma perutean untuk Pembagian Kunci di PolarDB-X berbeda dari yang digunakan di MySQL.

Perbedaan antara Pembagian Kunci dan Pembagian Hash meliputi aspek-aspek berikut:

  • Tidak ada kolom kunci partisi yang dapat ditentukan dalam Pembagian Kunci. Secara default, kolom kunci utama digunakan sebagai kunci partisi. Jika tidak ada kolom kunci utama yang ditentukan, pembagian dilakukan berdasarkan kunci unik.

  • Pembagian Kunci mendukung kunci partisi vektor. Jika kunci partisi vektor terdiri dari beberapa kolom kunci partisi, kolom kunci partisi pertama digunakan secara default untuk merutekan data.

  • Pembagian Kunci mendukung tipe data berikut: INT, STRING, DATE, dan DATETIME.

Sintaksis

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

partition_column_list:
  partition_column_list[, partition_column, partition_column, ...]
Catatan

Untuk informasi lebih lanjut tentang perbedaan antara Pembagian Hash dan Pembagian Kunci, lihat tabel Perbandingan antara Pembagian Kunci dan Pembagian Hash pada topik "Ikhtisar".

Catatan Penggunaan

  • Pembagian Kunci tidak mendukung fungsi partisi.

  • Secara default, tabel yang dipartisi dapat berisi hingga 8.192 partisi.

  • Secara default, kunci partisi dapat terdiri dari hingga lima kolom kunci partisi.

Contoh

Menggunakan kunci partisi kolom tunggal

Tentukan kolom id sebagai kunci partisi kolom tunggal untuk Pembagian Kunci dan atur jumlah partisi menjadi 8.

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;

Menggunakan kunci partisi vektor

Gunakan kunci partisi vektor yang terdiri dari kolom bid dan id untuk Pembagian Kunci dan atur jumlah partisi menjadi 8.

Penting

Secara default, kolom kunci partisi pertama digunakan untuk menghitung nilai hash. Jika kueri berisi kondisi kesetaraan yang melibatkan kolom kunci partisi awalan, kondisi pemangkasan partisi terpenuhi. Kolom kunci partisi yang tersisa, seperti id, digunakan untuk pemisahan partisi data panas.

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;

Batasan

Batasan pada tipe data

  • Tipe bilangan bulat: BIGINT, BIGINT UNSIGNED, INT, INT UNSIGNED, MEDIUMINT, MEDIUMINT UNSIGNED, SMALLINT, SMALLINT UNSIGNED, TINYINT, dan TINYINT UNSIGNED.

  • Tipe tanggal dan waktu: DATETIME, DATE, dan TIMESTAMP.

  • Tipe string: CHAR, VARCHAR, dan BINARY.

  • Tipe titik tetap: DECIMAL, di mana jumlah digit di bagian pecahan harus 0.

Keseimbangan distribusi data

  • Pembagian Kunci dan Pembagian Hash diimplementasikan berdasarkan algoritma penghashan konsisten bawaan MurmurHash3. Algoritma ini telah diuji secara luas di industri dan terbukti memiliki tingkat tabrakan data rendah serta performa tinggi.

  • Saat menggunakan Pembagian Kunci atau Pembagian Hash, distribusi data di berbagai partisi menjadi seimbang jika jumlah nilai berbeda dari kunci partisi lebih besar dari 3.000 berdasarkan algoritma MurmurHash3. Data didistribusikan secara lebih seimbang jika kunci partisi memiliki lebih banyak nilai berbeda.