基于mysql 分区的一次分区创建,移除以及扩展

官方文档:https://dev.mysql.com/doc/refman/8.0/en/partitioning-management.html

创建分区表

CREATE TABLE e (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30)
)
    PARTITION BY RANGE (id) (
        PARTITION p0 VALUES LESS THAN (50),
        PARTITION p1 VALUES LESS THAN (100),
        PARTITION p2 VALUES LESS THAN (150),
        PARTITION p3 VALUES LESS THAN (MAXVALUE)
);

查看数据分区

-rw-r-----. 1 mysql mysql  8620 Jul 30 23:03 e.frm
-rw-r-----. 1 mysql mysql 98304 Jul 30 23:06 e#P#p0.ibd
-rw-r-----. 1 mysql mysql 98304 Jul 30 23:06 e#P#p1.ibd
-rw-r-----. 1 mysql mysql 98304 Jul 30 23:06 e#P#p2.ibd
-rw-r-----. 1 mysql mysql 98304 Jul 30 23:06 e#P#p3.ibd

添加数据并查看

INSERT INTO e VALUES
    (1, "Jim", "Smith"),
    (51, "Mary", "Jones"),
    (101, "Frank", "White"),
    (151, "Linda", "Black");
SELECT * from e;

移除分区

ALTER TABLE e REMOVE PARTITIONING;

查看分区文件以及数据,数据未变。

-rw-r-----. 1 mysql mysql  8620 Jul 30 23:13 e.frm
-rw-r-----. 1 mysql mysql 98304 Jul 30 23:13 e.ibd

重新添加分区

ALTER TABLE e PARTITION BY RANGE (id) (
     PARTITION p0 VALUES LESS THAN (50),
        PARTITION p1 VALUES LESS THAN (100),
        PARTITION p2 VALUES LESS THAN (150),
        PARTITION p3 VALUES LESS THAN (200),
        PARTITION p4 VALUES LESS THAN (MAXVALUE)
);

查看分区文件

-rw-r-----. 1 mysql mysql  8620 Jul 30 23:24 e.frm
-rw-r-----. 1 mysql mysql 98304 Jul 30 23:24 e#P#p0.ibd
-rw-r-----. 1 mysql mysql 98304 Jul 30 23:24 e#P#p1.ibd
-rw-r-----. 1 mysql mysql 98304 Jul 30 23:24 e#P#p2.ibd
-rw-r-----. 1 mysql mysql 98304 Jul 30 23:24 e#P#p3.ibd
-rw-r-----. 1 mysql mysql 98304 Jul 30 23:24 e#P#p4.ibd

移除单个分区(重新分区尽量用ALTER TABLE ... REORGANIZE PARTITION代替)

这个命令会直接删除这个分区以及分区的数据,当数据量太大时,可以先备份冷数据,然后再移除分区

ALTER TABLE e DROP PARTITION p2;

 将最后一个分区扩展为两个分区

ALTER TABLE e
    REORGANIZE PARTITION p4 INTO (
        PARTITION p4 VALUES LESS THAN (300),
        PARTITION p5 VALUES LESS THAN (MAXVALUE)
);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值