MySQL表LIST分区,新增,删除,重组等

引用MySQL表RANGE分区,新增,删除,重组,效率对比这篇文章的表作为示例。

LIST分区和RANGE分区很相似。

LIST分区管理

创建表时进行分区


CREATE TABLE `student_1` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `NAME` varchar(30) NOT NULL,
  `SEX` char(2) NOT NULL,
  `AGE` int(11) NOT NULL,
  `CLASS` varchar(10) NOT NULL,
  `GRADE` varchar(20) NOT NULL,
  `HOBBY` varchar(100) DEFAULT NULL,
  `CREATE_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`ID`,`AGE`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
PARTITION BY LIST ( AGE )
(
PARTITION p1 VALUES IN ( 18,19 ),
PARTITION p2 VALUES IN ( 20,21 ),
PARTITION p3 VALUES IN ( 22,23 ),
PARTITION p4 VALUES IN ( 24 )
);

为现有数据的表进行分区

ALTER TABLE student_1
PARTITION BY LIST ( AGE )
(
PARTITION p1 VALUES IN ( 18,19 ),
PARTITION p2 VALUES IN ( 20,21 ),
PARTITION p3 VALUES IN ( 22,23 ),
PARTITION p4 VALUES IN ( 24 )
);

新增分区

ALTER TABLE student_1 ADD PARTITION (PARTITION p5 VALUES IN ( 25 ));

重组分区

合并分区

ALTER TABLE student_1
REORGANIZE PARTITION p4,p5 INTO
(
PARTITION p4_p5 VALUES IN ( 24,25 )
);

拆分分区

ALTER TABLE student_1
REORGANIZE PARTITION p4_p5 INTO
(
PARTITION p4 VALUES IN ( 24 ),
PARTITION p5 VALUES IN ( 25 )
);

查看分区的数据量

SELECT
	PARTITION_NAME,
	TABLE_ROWS 
FROM
	INFORMATION_SCHEMA.PARTITIONS 
WHERE
	TABLE_NAME = 'student_1';

删除分区

当删除一个分区,该分区中所有的数据同时也被删除了。

ALTER TABLE student_1 DROP PARTITION p1;

取消分区

alter table student_1 remove partitioning;
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值