第一種在建表時同時分區(qū):可以根據(jù)需要一次建立足夠的分區(qū)
CREATE TABLE CRT(
ID VARCHAR(32) NOT NULL,
CELL_ID VARCHAR(15) NULL,
YEAR INT(11) NOT NULL,
MONTH INT(11) NOT NULL,
DAY INT(11) NULL,
TIME INT NULL,
MINUTE INT(11) NOT NULL,
QUANTITY INT(11) NULL,
PRIMARY KEY(ID, YEAR, MONTH)
) PARTITION BY RANGE COLUMNS(YEAR, MONTH) PARTITIONS 2(
PARTITION P202205 VALUES LESS THAN(2022, 6),
PARTITION P202206 VALUES LESS THAN(2022, 7));
第二種拧额,建表之后調(diào)整分區(qū):數(shù)據(jù)庫會重建分區(qū)同時根據(jù)數(shù)據(jù)時間把對應的數(shù)據(jù)插入對應的分區(qū)注竿。
- 注意赦役,重點在這:整個表重新分配分區(qū)烈拒,不受新增分區(qū)時遞增影響段磨。
ALTER TABLE CRT
PARTITION BY RANGE COLUMNS (YEAR, MONTH) (
PARTITION p202301 VALUES LESS THAN (2023, 2),
PARTITION p202302 VALUES LESS THAN (2023, 3),
PARTITION p202303 VALUES LESS THAN (2023, 4),
PARTITION p202304 VALUES LESS THAN (2023, 5)
);
第三種镇饮,建表之后新增分區(qū):
注意蜓竹,重點在這:分區(qū)表是按范圍進行分區(qū),其中,分區(qū)順序是嚴格地進行遞增俱济。就是說司蔬,如果想在中間新增分區(qū)是不可行的,只能按照順序進行遞增姨蝴。
比如俊啼,數(shù)據(jù)庫中已經(jīng)存在(2023, 6)分區(qū),現(xiàn)在要新增一個分區(qū)VALUES LESS THAN (2023, 5)左医,這時就會報錯VALUES LESS THAN value must be strictly increasing for each partition授帕。
這時候就要采用第二種調(diào)整分區(qū)方式了,數(shù)據(jù)庫會重建分區(qū)同時根據(jù)數(shù)據(jù)時間把對應的數(shù)據(jù)插入對應的分區(qū)浮梢。
千萬別學網(wǎng)上別人說的刪掉分區(qū)跛十,或者重新建表重建分區(qū),重新導入數(shù)據(jù)秕硝,刪掉分區(qū)會刪掉數(shù)據(jù)芥映,重新導入數(shù)據(jù)會很費時間。
ALTER TABLE CRT
ADD PARTITION (PARTITION p202305 VALUES LESS THAN (2023, 6));
- 清理分區(qū)數(shù)據(jù)為空远豺,保留分區(qū)不刪除奈偏,僅僅是清理數(shù)據(jù):
ALTER TABLE CRT TRUNCATE PARTITION 202205;