MySQL分區(qū)三種方式

第一種在建表時同時分區(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ù)時間把對應(yīng)的數(shù)據(jù)插入對應(yīng)的分區(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ù)時間把對應(yīng)的數(shù)據(jù)插入對應(yīng)的分區(qū)。

千萬別學(xué)網(wǎng)上別人說的刪掉分區(qū),或者重新建表重建分區(qū),重新導(dǎo)入數(shù)據(jù),刪掉分區(qū)會刪掉數(shù)據(jù),重新導(dǎo)入數(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;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容