All Products
Search
Document Center

PolarDB:HASH-LIST

Last Updated:Mar 28, 2026

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

ParameterDeskripsi
table_nameNama tabel.
exprEkspresi partisi. Harus bertipe INT — tipe string tidak didukung.
value_listDaftar nilai batas untuk subpartisi.
partition_nameNama partisi. Harus unik dalam tabel.
subpartition_nameNama subpartisi. Harus unik dalam tabel.
Kedua ekspresi PARTITION BY HASH dan SUBPARTITION BY LIST harus 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:

  1. Langkah hashdept_no di-hash untuk memilih salah satu dari tiga partisi (dp0, dp1, atau dp2).

  2. Langkah listpart_no dicocokkan dengan daftar VALUES IN di 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_nopart_noContoh partisiSubpartisiAlasan
53dp1p4dept_no=5 di-hash ke dp1; part_no=3 cocok dengan VALUES IN (3, 4)
26dp0p2dept_no=2 di-hash ke dp0; part_no=6 cocok dengan VALUES IN (5, 6)
91dp2p6dept_no=9 di-hash ke dp2; part_no=1 cocok dengan VALUES IN (1, 2)