All Products
Search
Document Center

PolarDB:Jenis partisi PolarDB-X

Last Updated:Aug 13, 2026

PolarDB-X mendukung jenis partisi HASH, KEY, RANGE, LIST, dan CO_HASH untuk mengontrol distribusi data di seluruh partisi.

Jenis partisi

PolarDB-X mendukung jenis partisi berikut:

  • HASH partitioning

    • HASH (sintaks kompatibel MySQL)

    • KEY (sintaks kompatibel MySQL)

  • RANGE partitioning

    • RANGE (sintaks kompatibel MySQL)

    • RANGE COLUMNS (sintaks kompatibel MySQL)

  • LIST partitioning

    • LIST (sintaks kompatibel MySQL)

    • LIST COLUMNS (sintaks kompatibel MySQL)

  • Partisi berbasis skenario

    CO_HASH (sintaks khusus PolarDB-X)

HASH partitioning

HASH partitioning menggunakan algoritma consistent hashing untuk menghitung nilai hash dari kolom kunci partisi atau ekspresi fungsi partisi, lalu merutekan data sesuai hasilnya. Jenis ini mencakup KEY partitioning (berbasis kolom) dan HASH partitioning (berbasis fungsi).

Perbandingan antara KEY partitioning dan HASH partitioning

Jenis partisi

Kunci partisi yang didukung

Mendukung fungsi partisi

Sintaks pernyataan

Batasan

Kebijakan perutean (kueri titik)

KEY partitioning (default)

Kunci partisi satu kolom

Tidak

PARTITION BY KEY(c1)

  • Pemisahan partisi panas tidak didukung.

  • Data dirutekan ke partisi berdasarkan satu kolom kunci partisi.

  1. Nilai hash c1_hash dihitung menggunakan algoritma consistent hashing berdasarkan nilai kolom c1.

  2. Data dirutekan ke partisi berbeda berdasarkan nilai c1_hash.

Kunci partisi vektor

Tidak

PARTITION BY KEY(c1,c2,...,cn)

  • Pemisahan partisi panas didukung.

  • Secara default, data dirutekan hanya berdasarkan kolom c1. Kolom lain memungkinkan pemisahan partisi panas.

  • n adalah jumlah kolom kunci partisi yang digunakan secara bersamaan.

  • Maksimal lima kolom kunci partisi didukung.

  1. Nilai kolom kunci partisi (c1,c2,...,cn) digunakan sebagai kunci partisi vektor untuk menghitung hash masing-masing kolom dalam vektor menggunakan algoritma consistent hashing. Hasilnya adalah vektor hash (c1_hash,c2_hash,...,cn_hash) yang sesuai dengan kunci partisi vektor tersebut.

  2. Vektor hash (c1_hash,c2_hash,...,cn_hash) digunakan untuk merutekan data ke partisi berdasarkan rentang.

Hash

Kunci partisi satu kolom

Tidak

PARTITION BY HASH(c1)

  • Pemisahan partisi panas tidak didukung.

  • Data dirutekan ke partisi berdasarkan satu kolom kunci partisi.

  • Hanya fungsi partisi berikut yang didukung:

    • YEAR

    • MONTH

    • DAYOFMONTH

    • DAYOFWEEK

    • DAYOFYEAR

    • TO_DAYS

    • TO_MONTHS

    • TO_WEEKS

    • TO_SECONDS

    • UNIX_TIMESTAMP

    • SUBSTR/SUBSTRING

Kebijakan perutean PARTITION BY HASH(c1) sama dengan PARTITION BY KEY(c1).

Ya

PARTITION BY HASH(YEAR(c1))

  1. Fungsi YEAR digunakan untuk menghitung nilai tahun berdasarkan nilai kolom c1.

  2. Nilai hash year_hash dihitung berdasarkan nilai tahun menggunakan algoritma consistent hashing.

  3. Data dirutekan ke partisi berdasarkan nilai year_hash.

Kunci partisi vektor

Tidak

PARTITIONBY HASH(c1,c2,...,cn)

  • Pemisahan partisi panas tidak didukung.

  • Setelah tabel dibuat, data dirutekan berdasarkan semua kolom kunci partisi.

  • Maksimal lima kolom kunci partisi didukung.

  1. Nilai kolom kunci partisi (c1,c2,...,cn) digunakan sebagai kunci partisi vektor untuk menghitung hash masing-masing kolom dalam vektor menggunakan algoritma consistent hashing. Hasilnya adalah vektor hash yang sesuai dengan kunci partisi vektor tersebut.

  2. Data dirutekan ke partisi berdasarkan nilai hash vektor.

RANGE partitioning

RANGE partitioning membandingkan nilai kunci partisi atau hasil fungsi partisi terhadap batas yang telah ditentukan untuk merutekan data. Jenis ini mencakup RANGE COLUMNS partitioning (berbasis kolom) dan RANGE partitioning (berbasis fungsi).

Perbandingan antara RANGE partitioning dan RANGE COLUMNS partitioning

Jenis partisi

Kunci partisi yang didukung

Mendukung fungsi partisi

Sintaks pernyataan

Batasan

Kebijakan perutean (kueri titik)

Range Columns

Kunci partisi satu kolom dan kunci partisi vektor

Tidak

PARTITION BY RANGE COLUMNS (c1,c2,...,cn) ( PARTITION p1 VALUES LESS THAN (1,10,...,1000), PARTITION p2 VALUES LESS THAN (2,20,...,2000) ...)

Mendukung pemisahan partisi panas. Jika banyak baris memiliki nilai c1 yang sama (misalnya, 88), Anda dapat melakukan pemisahan berdasarkan c2.

  1. Nilai kolom kunci partisi (c1,c2,...,cn) digunakan sebagai kunci partisi vektor.

  2. Kunci partisi vektor ini digunakan untuk menentukan partisi tujuan data berdasarkan algoritma pencarian biner.

Range

Kunci partisi satu kolom

Ya

PARTITION BY RANGE(YEAR(c1)) ( PARTITION p1 VALUES LESS THAN (2019), PARTITION p2 VALUES LESS THAN (2021) ...)

  • Pemisahan partisi panas tidak didukung.

  • Hanya fungsi partisi berikut yang didukung:

    • YEAR

    • MONTH

    • DAYOFMONTH

    • DAYOFWEEK

    • DAYOFYEAR

    • TO_DAYS

    • TO_MONTHS

    • TO_WEEKS

    • TO_SECONDS

    • UNIX_TIMESTAMP

    • SUBSTR/SUBSTRING

  1. Fungsi YEAR digunakan untuk menghitung nilai tahun berdasarkan nilai kolom c1.

  2. Nilai tahun digunakan untuk menentukan partisi tujuan data berdasarkan algoritma pencarian biner.

LIST partitioning

LIST partitioning bekerja seperti RANGE partitioning tetapi mencocokkan nilai terhadap daftar nilai diskret, bukan rentang. Jenis ini mencakup LIST COLUMNS partitioning (berbasis kolom) dan LIST partitioning (berbasis fungsi).

Perbandingan antara LIST partitioning dan LIST COLUMNS partitioning

Jenis partisi

Kunci partisi yang didukung

Mendukung fungsi partisi

Sintaks pernyataan

Batasan

Kebijakan perutean (kueri titik)

List Columns

Kunci partisi satu kolom dan kunci partisi vektor

Tidak

PARTITION BY LIST COLUMNS (c1,c2,...,cn) ( PARTITION p1 VALUES IN ((1,10,...,1000),(2,20,...,2000) ), PARTITION p2 VALUES IN ((3,30,...,3000),(3,30,...,3000) ), ...)

Pemisahan partisi panas tidak didukung.

  1. Nilai kolom kunci partisi (c1,c2,...,cn) digunakan sebagai kunci partisi vektor.

  2. Kunci partisi vektor ini digunakan untuk menentukan partisi tujuan data berdasarkan algoritma pencarian biner.

List

Kunci partisi satu kolom

Ya

PARTITION BY LIST(YEAR(c1)) ( PARTITION p1 VALUES IN (2018,2019), PARTITION p2 VALUES IN (2020,2021) ...)

Pemisahan partisi panas tidak didukung.

COHASH partitioning

PolarDB-X juga menyediakan partisi CO_HASH untuk tabel yang memerlukan partisi horizontal pada beberapa kolom dengan nilai serupa.

Tabel berikut membandingkan CO_HASH dengan partisi HASH dan KEY.

Perbandingan antara partisi CO_HASH, partisi HASH, dan partisi KEY

Item

CO_HASH

KEY

Hash

Sintaks pernyataan

PARTITION BY CO_HASH(c1, c2) PARTITOINS 8

PARTITION BY KEY(c1, c2) PARTITOINS 8

PARTITION BY HASH(c1, c2) PARTITOINS 8

Kunci partisi satu kolom

Tidak didukung

Didukung

Didukung

Kunci partisi vektor

Didukung

Didukung

Didukung

Fungsi partisi pada kolom kunci partisi vektor

Didukung. Contoh:

PARTITION BY CO_HASH(
-- Partisi tabel berdasarkan empat karakter terakhir dari nilai kolom c1.
RIGHT(c1, 4),
-- Partisi tabel berdasarkan empat karakter terakhir dari nilai kolom c2.
RIGHT(c2, 4))
PARTITOINS 8

Tidak didukung

Tidak didukung

Hubungan antar kolom kunci partisi

Nilai kolom harus serupa. Anda harus menjaga keserupaan antar kolom kunci partisi. Contoh:

  • Nilai kolom c1 dan c2 selalu sama

  • CO_HASH(c1, c2) cocok.

  • Empat karakter terakhir dari nilai kolom c1 dan c2 selalu sama.

  • CO_HASH(RIGHT(c1,4), RIGHT(c2,4)) cocok.

Menyerupai awalan indeks komposit.

Menyerupai awalan indeks komposit.

Kueri ekuivalen untuk kolom kunci partisi dengan awalan, pemangkasan partisi, dan contoh

Didukung. Contoh:

  • c1='x': Pemangkasan partisi didukung dan kueri dirutekan ke satu partisi.

  • c1='x' dan c2='y': Pemangkasan partisi didukung dan kueri dirutekan ke nol atau satu partisi. Jika partisi perutean untuk c1='x' dan c2='y' berbeda, tidak ada partisi yang dikembalikan.

Didukung. Contoh:

  • c1='x': Pemangkasan partisi didukung dan kueri dirutekan ke satu atau beberapa shard. Jika Anda melakukan pemisahan partisi panas pada nilai x, beberapa partisi dikembalikan.

  • c1='x' dan c2='y': Pemangkasan partisi didukung dan kueri dirutekan ke satu partisi.

Tidak didukung. Pemangkasan partisi memerlukan kondisi ekuivalen pada semua kolom kunci partisi. Contoh:

  • c1='x': Tidak ada pemangkasan partisi. Semua partisi dipindai.

  • c1='x' dan c2='y': Pemangkasan partisi didukung dan kueri dirutekan ke satu partisi.

Kueri ekuivalen untuk kolom kunci partisi tanpa awalan, pemangkasan partisi, dan contoh

Didukung. Kondisi ekuivalen untuk semua kolom kunci partisi mendukung pemangkasan partisi. Contoh:

  • c2='x': Pemangkasan partisi didukung dan kueri dirutekan ke satu partisi.

  • c1='x' atau c2='y': Pemangkasan partisi didukung dan kueri dirutekan ke satu atau dua partisi. Jika partisi perutean untuk c1='x' dan c2='y' sama, satu partisi dikembalikan. Jika tidak, dua partisi dipindai.

Tidak didukung. Tanpa kondisi awalan, semua partisi dipindai. Contoh:

  • c2='x': Semua partisi dipindai.

  • c1='x' atau c2='y': Semua partisi dipindai.

Tidak didukung. Tanpa kondisi awalan, semua partisi dipindai. Contoh:

  • c2='x': Semua partisi dipindai.

  • c1='x' atau c2='y': Semua partisi dipindai.

Kueri rentang

Tidak didukung. Semua partisi dipindai.

Tidak didukung. Semua partisi dipindai.

Tidak didukung. Semua partisi dipindai.

Kebijakan perutean (kueri titik)

  1. Ambil nilai asli v1 untuk kueri ekuivalen dari kolom c1. Operasi ini berlaku untuk kolom lainnya.

  2. Jika kolom menggunakan fungsi partisi, nilai fungsi dihitung menggunakan rumus f1 = partFunc(v1). Jika tidak, nilai fungsi adalah v1.

  3. Gunakan algoritma consistent hashing untuk menghitung hash c1_hash dari f1. Hash ini merupakan bilangan bulat bertipe long.

  4. Data dirutekan ke partisi berbeda berdasarkan nilai c1_hash.

Untuk informasi lebih lanjut, lihat Kebijakan perutean di bagian HASH partitioning.

Kebijakan perutean sama dengan Hash partitioning.

Pemisahan partisi panas

Tidak didukung. Pemisahan partisi panas lebih lanjut tidak dapat dilakukan pada nilai kunci panas seperti c1='88'.

Didukung

Tidak didukung

Manajemen partisi seperti pemisahan, penggabungan, dan migrasi partisi

Didukung

Didukung

Didukung

Subpartisi

Didukung

Didukung

Didukung