全部产品
Search
文档中心

PolarDB:Mengganti tabel partisi interval range

更新时间:Jul 06, 2025

Anda dapat mengeksekusi pernyataan ALTER TABLE untuk memodifikasi atribut partisi, sehingga beralih antara tabel partisi interval range, tabel biasa, atau tabel partisi rentang.

Prasyarat

Versi kluster harus PolarDB for MySQL 8.0 dengan versi revisi kluster minimal 8.0.2.2.0 atau lebih baru. Untuk informasi tentang cara melihat versi kluster Anda, lihat Kueri Versi Mesin.

Aturan penggantian

Perhatikan aturan penggantian berikut:
  • Tabel biasa dapat diganti menjadi tabel partisi interval range, namun tabel partisi interval range tidak dapat dikembalikan menjadi tabel biasa. Gunakan pernyataan ALTER TABLE nama_tabel opsi_partisi untuk mengganti tabel biasa menjadi tabel partisi interval range.
  • Anda dapat beralih antara tabel partisi interval range dan tabel partisi rentang dengan cara berikut: Di PolarDB for MySQL 8.0.2.2.0 dan yang lebih baru, eksekusi pernyataan ALTER TABLE nama_tabel opsi_partisi. Di PolarDB for MySQL 8.0.2.2.1 dan yang lebih baru, gunakan pernyataan ALTER TABLE nama_tabel SET { INTERVAL(tipe, ekspresi) | INTERVAL(ekspresi) }.

Sintaksis

  • Sintaksis 1
    ALTER TABLE nama_tabel opsi_partisi;
    opsi_partisi adalah:
     PARTITION BY
        { RANGE{(ekspresi) | COLUMNS(daftar_kolom)} }
        { INTERVAL(tipe, ekspresi) | INTERVAL(ekspresi) }
        [(definisi_partisi [, definisi_partisi] ...)]
    definisi_partisi adalah:
    PARTITION nama_partisi
            [VALUES LESS THAN {ekspresi | MAXVALUE}]
            [[STORAGE] ENGINE [=] nama_mesin]
            [COMMENT [=] 'string' ]
            [DATA DIRECTORY [=] 'direktori_data']
            [INDEX DIRECTORY [=] 'direktori_indeks']
            [MAX_ROWS [=] jumlah_baris_maksimum]
            [MIN_ROWS [=] jumlah_baris_minimum]
            [TABLESPACE [=] nama_tablespace]
  • Sintaksis 2
    ALTER TABLE nama_tabel SET { INTERVAL(tipe, ekspresi) | INTERVAL(ekspresi) };

Parameter

ParameterDeskripsi
nama_tabelNama tabel.
RANGE(ekspresi)Ekspresi partisi. Harus bertipe INT. Tipe string tidak didukung.
daftar_kolomDaftar partisi. Digunakan dalam LIST COLUMNS(). Ekspresi tidak didukung.
INTERVAL(tipe)Tipe interval. Delapan tipe waktu didukung: YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, dan SECOND. Jika Anda tidak menentukan tipe di sini, tipe numerik dipilih secara default.
INTERVAL(ekspresi)Nilai interval. Jika tipe diatur ke SECOND, nilai tidak boleh kurang dari 60.
MAXVALUENilai maksimum partisi.
nama_mesinNama mesin penyimpanan.

Mengganti tabel biasa menjadi tabel partisi interval range

Anda dapat mengganti tabel yang ada menjadi tabel partisi interval range. Pilih kunci partisi yang sesuai dan definisikan partisi untuk data yang ada di tabel. Setelah pergantian selesai, data baru yang dimasukkan dapat memicu pembuatan otomatis partisi.

Contoh berikut mengganti tabel orders menjadi tabel partisi interval range.
CREATE TABLE orders(
  orderkey BIGINT NOT NULL,
  custkey BIGINT NOT NULL,
  orderdate DATE NOT NULL
);

ALTER TABLE orders
PARTITION BY RANGE COLUMNS(orderdate) INTERVAL(MONTH, 1) (
  PARTITION p0 VALUES LESS THAN('2021-10-01')
);

Mengganti tabel partisi rentang menjadi tabel partisi interval range

Anda dapat mengganti tabel partisi rentang yang ada menjadi tabel partisi interval range. Definisikan partisi rentang interval untuk data yang ada di tabel. Setelah pergantian selesai, data baru yang dimasukkan dapat memicu pembuatan otomatis partisi. Gunakan salah satu metode berikut:
  • Metode 1: Eksekusi pernyataan ALTER TABLE nama_tabel opsi_partisi
    Contoh berikut mengganti tabel partisi orders menjadi tabel partisi interval range.
    CREATE TABLE orders(
      orderkey BIGINT NOT NULL,
      custkey BIGINT NOT NULL,
      orderdate DATE NOT NULL
    )
    PARTITION BY RANGE(orderkey) (
      PARTITION p0 VALUES LESS THAN(10000000)
    );
    
    ALTER TABLE orders
    PARTITION BY RANGE COLUMNS(orderdate) INTERVAL(MONTH, 1) (
      PARTITION p0 VALUES LESS THAN('2021-10-01')
    );
  • Metode 2: Eksekusi pernyataan ALTER TABLE nama_tabel SET { INTERVAL(tipe, ekspresi) | INTERVAL(ekspresi) }
    Contoh berikut mengganti tabel partisi orders menjadi tabel partisi interval range.
    CREATE TABLE orders(
      orderkey BIGINT NOT NULL,
      custkey BIGINT NOT NULL,
      orderdate DATE NOT NULL
    )
    PARTITION BY RANGE COLUMNS(orderdate) (
      PARTITION p0 VALUES LESS THAN('2021-10-01')
    );
    
    ALTER TABLE orders SET INTERVAL(MONTH, 1);

Mengganti tabel partisi interval range menjadi tabel partisi rentang

Anda dapat mengganti tabel partisi interval range yang ada menjadi tabel partisi rentang. Gunakan salah satu metode berikut:
  • Metode 1: Eksekusi pernyataan ALTER TABLE nama_tabel opsi_partisi
    Contoh berikut mengganti tabel partisi orders menjadi tabel partisi rentang.
    CREATE TABLE orders(
      orderkey BIGINT NOT NULL,
      custkey BIGINT NOT NULL,
      orderdate DATE NOT NULL
    )
    PARTITION BY RANGE(orderkey) INTERVAL(100000) (
      PARTITION p0 VALUES LESS THAN(10000000)
    );
    
    ALTER TABLE orders
    PARTITION BY RANGE COLUMNS(orderdate) (
      PARTITION p0 VALUES LESS THAN('2021-10-01')
    );
  • Metode 2: Eksekusi pernyataan ALTER TABLE nama_tabel SET { INTERVAL(tipe, ekspresi) | INTERVAL(ekspresi) }
    Contoh berikut mengganti tabel partisi orders menjadi tabel partisi rentang.
    CREATE TABLE orders(
      orderkey BIGINT NOT NULL,
      custkey BIGINT NOT NULL,
      orderdate DATE NOT NULL
    )
    PARTITION BY RANGE(orderkey) INTERVAL(100000) (
      PARTITION p0 VALUES LESS THAN(10000000)
    );
    
    ALTER TABLE orders SET INTERVAL(); /* Mengganti tabel partisi interval range menjadi tabel partisi rentang tanpa menentukan tipe dan nilai interval. */