All Products
Search
Document Center

PolarDB:MM

Last Updated:Mar 29, 2026

Fungsi MM mempartisi data tabel berdasarkan bulan dalam setahun. Setiap shard tabel dipetakan ke satu bulan kalender, sehingga penghapusan atau pengarsipan data untuk satu bulan hanya memerlukan operasi pada satu shard, bukan pemindaian dan penghapusan seluruh tabel.

Cara kerja

MM mengekstrak nilai bulan (1–12) dari nilai waktu pada kunci shard dan menggunakan nilai tersebut sebagai subskrip shard tabel. Baris dengan create_time di bulan Januari diarahkan ke shard 1, baris di bulan Februari diarahkan ke shard 2, dan seterusnya.

Kapan menggunakan MM

Gunakan MM ketika pola kueri Anda sejalan dengan bulan kalender:

  • Siklus penagihan bulanan — Hasilkan atau arsipkan faktur bulanan dengan melakukan operasi pada shard yang sesuai.

  • Laporan bulanan — Lakukan kueri hanya pada satu shard, bukan memindai seluruh tabel.

  • Arsip atau pembersihan data bulanan — Hapus seluruh shard untuk satu bulan melalui satu operasi DDL, yang lebih cepat daripada operasi DELETE tingkat baris.

Hindari penggunaan MM jika pola akses Anda mencakup beberapa bulan sekaligus atau tidak berbasis waktu. Dalam kasus tersebut, fungsi sharding berbasis hash atau berbasis rentang lebih tepat digunakan.

Batasan

BatasanDetail
Tipe kunci partisi yang didukungDATE, DATETIME, TIMESTAMP
CakupanSharding tabel (tbpartition) saja — bukan sharding database (dbpartition)
Jumlah maksimum shard tabel per shard database12 (satu untuk setiap bulan)
Versi minimum PolarDB-X 1.05.1.28-1320920

Contoh

Pernyataan Data Definition Language (DDL) berikut membuat tabel yang di-shard berdasarkan ID pengguna di tingkat database dan berdasarkan bulan di tingkat tabel. Dengan tbpartitions 12, PolarDB-X 1.0 membuat satu shard tabel untuk setiap bulan kalender.

CREATE TABLE test_mm_tb (
    id          INT,
    name        VARCHAR(30)  DEFAULT NULL,
    create_time DATETIME     DEFAULT NULL,
    PRIMARY KEY (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8
  dbpartition  BY HASH(id)
  tbpartition  BY MM(create_time) tbpartitions 12;