All Products
Search
Document Center

PolarDB:MMDD

Last Updated:Mar 29, 2026

MMDD mempartisi tabel besar menjadi shard tabel berdasarkan hari kalender di PolarDB-X 1.0. Subskrip nama setiap shard tabel dipetakan ke hari tertentu yang diidentifikasi oleh dua digit bulan dan dua digit hari (format MMDD).

Cara kerja

MMDD menurunkan subskrip shard tabel dari bagian bulan dan hari pada nilai kunci partisi. Baris dengan create_time bernilai 2024-03-15 dipetakan ke shard tabel 0315, sehingga ditempatkan di shard yang merepresentasikan tanggal 15 Maret.

Karena MMDD melakukan routing berdasarkan hari dalam tahun, setiap shard database menyimpan paling banyak 366 shard tabel—satu untuk setiap hari kalender yang mungkin.

Batasan

ConstraintDetail
Tipe data yang didukungDATE, DATETIME, atau TIMESTAMP
Cakupan shardingHanya untuk shard tabel — tidak dapat digunakan untuk sharding database
Jumlah maksimum shard tabel per shard database366 (satu per hari kalender; satu tahun memiliki paling banyak 366 hari)
Versi minimumInstans PolarDB-X 1.0 versi 5.1.28-1320920 atau lebih baru

Kasus penggunaan

Gunakan MMDD ketika Anda perlu mempartisi tabel besar berdasarkan hari dalam tahun dan pola kueri Anda sesuai dengan hari kalender tertentu. Subskrip shard tabel secara langsung merepresentasikan hari kalender, sehingga menjadikan kueri rentang berbasis hari lebih efisien.

MMDD tidak cocok untuk:

  • Sharding database — MMDD hanya berlaku untuk shard tabel.

  • Distribusi data merata tanpa mempertimbangkan tanggal — jika volume data Anda sangat bervariasi berdasarkan hari (misalnya, traffic tinggi pada hari kerja dan rendah pada akhir pekan), MMDD akan menghasilkan shard dengan ukuran tidak merata. Gunakan fungsi berbasis hash untuk distribusi yang seragam.

Membuat tabel dengan sharding MMDD

Contoh Data Definition Language (DDL) berikut mempartisi data ke dalam shard database berdasarkan nama pengguna (hash) dan ke dalam shard tabel berdasarkan hari kalender menggunakan MMDD pada kolom create_time.

CREATE TABLE test_mmdd_tb (
    id          INT,
    name        VARCHAR(30)  DEFAULT NULL,
    create_time DATETIME     DEFAULT NULL,
    PRIMARY KEY (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8
  dbpartition  BY HASH(name)
  tbpartition  BY MMDD(create_time) tbpartitions 366;
  -- 366 tbpartitions: satu per hari kalender yang mungkin (satu tahun memiliki paling banyak 366 hari)

Parameter utama:

ParameterNilaiDeskripsi
dbpartition byHASH(name)Mendistribusikan baris ke seluruh shard database dengan melakukan hashing pada kolom name
tbpartition byMMDD(create_time)Mengarahkan setiap baris ke shard tabel berdasarkan bulan dan hari dari create_time
tbpartitions366Jumlah shard tabel per shard database — diatur ke 366 untuk mencakup setiap hari kalender dalam setahun