全部产品
Search
文档中心

PolarDB:Beralih antara pembagian rentang dan pembagian rentang interval

更新时间:Jul 03, 2025

Topik ini menjelaskan cara beralih antara pembagian rentang dan pembagian rentang interval.

Mengubah tabel terpartisi rentang menjadi tabel terpartisi rentang interval

Gunakan pernyataan ALTER TABLE...SET INTERVAL untuk mengubah tabel terpartisi rentang yang ada menjadi tabel terpartisi rentang interval.

Setelah menetapkan rentang atau interval waktu, basis data secara otomatis membuat partisi berdasarkan rentang atau interval waktu tersebut. Data kemudian dimasukkan ke dalam partisi baru.

Pernyataan tersebut menggunakan format berikut:

ALTER TABLE <table_name> SET INTERVAL (<constant> | <expression>);

Untuk informasi lebih lanjut tentang parameter INTERVAL, lihat Pembagian Rentang Interval.

Mengubah tabel terpartisi rentang interval menjadi tabel terpartisi rentang

Gunakan pernyataan SET INTERVAL() untuk menonaktifkan pembagian rentang interval. Setelah pembagian rentang interval dinonaktifkan, basis data mengubah tabel terpartisi rentang interval menjadi tabel terpartisi rentang. Rentang atau interval waktu untuk pembagian rentang interval diubah menjadi rentang atau interval waktu untuk pembagian rentang.

Pernyataan tersebut menggunakan format berikut:

ALTER TABLE <table_name> SET INTERVAL ();

Contoh

Contoh berikut menunjukkan cara mengubah tabel penjualan dari tabel terpartisi rentang menjadi tabel terpartisi rentang interval dan memasukkan data ke dalamnya:

Buat tabel terpartisi rentang bernama sales seperti yang ditunjukkan dalam contoh berikut:

CREATE TABLE sales
(
  prod_id           int,
  prod_quantity     int,
  sold_month        date
)
PARTITION BY RANGE(sold_month)
(
  PARTITION p1
    VALUES LESS THAN('15-JAN-2019'),
  PARTITION p2
    VALUES LESS THAN('15-FEB-2019')
);

Kueri tampilan ALL_TAB_PARTITIONS seperti yang ditunjukkan dalam contoh berikut:

SELECT partition_name, high_value FROM ALL_TAB_PARTITIONS;

Hasil berikut dikembalikan:

 partition_name |      high_value
----------------+----------------------
 P1             | FOR VALUES FROM ('15-JAN-19 00:00:00') TO ('15-FEB-19 00:00:00')
 P2             | FOR VALUES FROM (MINVALUE) TO ('15-JAN-19 00:00:00')
(2 rows)

Ubah tabel terpartisi rentang menjadi tabel terpartisi rentang interval seperti yang ditunjukkan dalam contoh berikut:

ALTER TABLE sales SET INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'));

Masukkan data yang melebihi partisi rentang seperti yang ditunjukkan dalam contoh berikut:

INSERT INTO sales VALUES (1,100,'05-APR-2019');
INSERT 0 1

Setelah memasukkan data, kueri tampilan ALL_TAB_PARTITIONS lagi seperti yang ditunjukkan dalam contoh berikut:

SELECT partition_name, high_value FROM ALL_TAB_PARTITIONS;

Jika data dimasukkan, sistem menghasilkan nama untuk partisi rentang interval. Nama tersebut bervariasi berdasarkan sesi. Hasil berikut dikembalikan:

 partition_name |      high_value
----------------+----------------------
 SYS596430103   | FOR VALUES FROM ('15-MAR-19 00:00:00') TO ('15-APR-19 00:00:00')
 P1             | FOR VALUES FROM ('15-JAN-19 00:00:00') TO ('15-FEB-19 00:00:00')
 P2             | FOR VALUES FROM (MINVALUE) TO ('15-JAN-19 00:00:00')
(3 rows)