引用MySQL表RANGE分区,新增,删除,重组,效率对比这篇文章的表作为示例。
KEY分区管理
key分区和hash分区比较相似。
创建表时进行分区
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 KEY(AGE) PARTITIONS 5;
为现有数据的表进行分区
常规分区
ALTER TABLE `student_1` PARTITION BY KEY(AGE) PARTITIONS 5;
线性分区
ALTER TABLE `student_1` PARTITION BY LINEAR KEY(AGE) PARTITIONS 5;
新增分区
增加2个分区
ALTER TABLE student_1 add PARTITION partitions 2;
减少分区
减少3个分区
ALTER TABLE student_1 COALESCE PARTITION 3;
查看分区的数据量
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;
|