Partisi HASH-LIST mendistribusikan baris ke berbagai partisi melalui penghashan ekspresi partisi, lalu menempatkan setiap baris ke dalam subpartisi berdasarkan daftar nilai diskret. Gunakan strategi partisi ini ketika Anda memerlukan distribusi data yang merata di tingkat atas (hash) dan pengelompokan kategorikal di dalam setiap partisi (list).
Sintaks
CREATE TABLE [schema.]table_name
table_definition
PARTITION BY [LINEAR] HASH(expr)
SUBPARTITION BY LIST (expr)
(partition_definition [, partition_definition] ...)partition_definition adalah:
PARTITION partition_name
(subpartition_definition [, subpartition_definition] ...)subpartition_definition adalah:
SUBPARTITION subpartition_name
VALUES IN (value_list)Parameter
| Parameter | Deskripsi |
|---|---|
table_name | Nama tabel. |
expr | Ekspresi partisi. Harus bertipe INT — tipe string tidak didukung. |
value_list | Daftar nilai batas untuk subpartisi. |
partition_name | Nama partisi. Harus unik dalam tabel. |
subpartition_name | Nama subpartisi. Harus unik dalam tabel. |
Kedua ekspresiPARTITION BY HASHdanSUBPARTITION BY LISTharus menghasilkan nilai bertipe INT. Tipe string tidak didukung untuk kedua ekspresi tersebut.
Buat tabel partisi HASH-LIST
Contoh berikut membuat tabel sales_hash_list yang dipartisi berdasarkan dept_no (hash) dan disubpartisi berdasarkan part_no (list). Tabel ini memiliki tiga partisi, masing-masing berisi tiga subpartisi yang mencakup nilai 1–6.
CREATE TABLE sales_hash_list
(
dept_no INT,
part_no INT,
country VARCHAR(20),
date DATE,
amount INT
)
PARTITION BY HASH(dept_no)
SUBPARTITION BY LIST(part_no)
(
PARTITION dp0 (
SUBPARTITION p0 VALUES IN (1, 2),
SUBPARTITION p1 VALUES IN (3, 4),
SUBPARTITION p2 VALUES IN (5, 6)
),
PARTITION dp1 (
SUBPARTITION p3 VALUES IN (1, 2),
SUBPARTITION p4 VALUES IN (3, 4),
SUBPARTITION p5 VALUES IN (5, 6)
),
PARTITION dp2 (
SUBPARTITION p6 VALUES IN (1, 2),
SUBPARTITION p7 VALUES IN (3, 4),
SUBPARTITION p8 VALUES IN (5, 6)
)
);Cara baris diarahkan
PolarDB menentukan subpartisi tujuan untuk setiap baris dalam dua langkah:
Langkah hash —
dept_nodi-hash untuk memilih salah satu dari tiga partisi (dp0,dp1, ataudp2).Langkah list —
part_nodicocokkan dengan daftarVALUES INdi dalam partisi tersebut untuk memilih subpartisi.
Contoh berikut menggambarkan bagaimana baris tertentu diarahkan. Partisi yang ditetapkan pada langkah hash bergantung pada fungsi hash dan jumlah partisi.
dept_no | part_no | Contoh partisi | Subpartisi | Alasan |
|---|---|---|---|---|
| 5 | 3 | dp1 | p4 | dept_no=5 di-hash ke dp1; part_no=3 cocok dengan VALUES IN (3, 4) |
| 2 | 6 | dp0 | p2 | dept_no=2 di-hash ke dp0; part_no=6 cocok dengan VALUES IN (5, 6) |
| 9 | 1 | dp2 | p6 | dept_no=9 di-hash ke dp2; part_no=1 cocok dengan VALUES IN (1, 2) |