一、分区概述
1、什么是分区?
MySQL的Table分区是一种在表的基础上进行分割数据体系的处理方式。分区本质上是一种将大表分解成小表,可以更好地管理、维护、查询和分析数据的方式。分区的操作可以减轻锁的负荷,提高查询效率,及实现数据灵活管理的目的。MySQL支持的分区方式有:RANGE分区、LIST分区、HASH分区、KEY分区等。
2、为什么要使用分区?
随着数据量的逐渐增加,为了提高数据的查询效率,我们可能会采用分区的方式对表进行划分。分区可以大大加快大表中的数据操作速度,并且将表分成若干个子集,可以更加方便维护和管理数据,在后期数据量增加时,方便添加和删除分区,非常方便。
二、删除分区
1、删除未被使用的分区
ALTER TABLE table_name COALESCE PARTITION partition_number
该语句将会合并表的一个已被使用的分区到相邻的空分区中,而空分区需要由mysql自动创建。例如,如果你有一个11到20号的分区,其中的两个分区:15、18没有数据,你可以运行该语句将这些空分区合并,并且系统会自动将15和18的空分区删除。
2、删除已被使用的分区
ALTER TABLE table_name DROP PARTITION partition_name
该语句将会删除一个已经存在数据的分区,其中partition_name为要删除的分区名称。如果你要删除的分区里还有数据,这个语句是会抛出异常的。
3、删除多个分区
ALTER TABLE table_name DROP PARTITION partition_name1, partition_name2, partition_name3…
该语句将会删除表中多个分区,只需要在语句中用”,”隔开分区名称即可。
4、删除某一范围内的分区
ALTER TABLE table_name DROP PARTITION partition_name1, partition_name2… UNTIL partition_nameN
该语句可以删除由 partition_name1 开始,到 partition_nameN 的所有分区。例如,你想删除1到10分区里面的数据,可以用”UNTIL”指定范围。
三、使用例子
以下给出一个分区表的例子,可以帮助我们更好的理解分区删除操作。
CREATE TABLE t1 (
id INT,
name VARCHAR(20),
age INT,
employer VARCHAR(20)
) ENGINE=InnoDB
PARTITION BY RANGE(id) (
PARTITION p0 VALUES LESS THAN (20),
PARTITION p1 VALUES LESS THAN (40),
PARTITION p2 VALUES LESS THAN (60),
PARTITION p3 VALUES LESS THAN (80),
PARTITION p4 VALUES LESS THAN MAXVALUE
);
-- 删除某个分区
ALTER TABLE t1 DROP PARTITION p3;
-- 删除某个范围内的分区
ALTER TABLE t1 DROP PARTITION p1, p2 UNTIL p4;
-- 合并空的分区
ALTER TABLE t1 COALESCE PARTITION p0;
四、总结
以上就是关于mysql删除分区的完整操作指南,希望对你有所帮助。