接着【高并发下的数据库设计水平分区之一篇】,接下来介绍对表分区进行修改、合并、重定义、删除分区。
由于数据库的数据是动态的,所以根据数据的变化,分区的策略有所改变。如:原来表分区可对其添加、修改、删除或可对其分解或合并。
分区示例图如下图一
分区示例图如下图二
分区示例图如下图三
表分区修改
alter table语句相信程序员都很熟悉,首先使用add partition 关键字,可对已存在的分区表进行添加,这里添加其实就是修改。
1、添加RANGE方式最大值分区
实现语句如:
Alter table order add partition (
partition p5 values less than(maxvalue)
)
表分区合并与分解
使用 reorganize partition 关键字
1、RANGE合并分区,将原来的 p0,p1分区合并起来放到新的 p0 分区中
实现语句如下:
Alter table order reorganize partition p0,p1 into(
partition p0 values less than(20000)
)
2、做个相反过程,RANGE分解分区,将原来的 p0分区分解成新的 p0,p1分区
实现语句如下:
Alter table order reorganize partition p0 into (
partition p0 values less than(10000),
partition p1 values less than(20000)
)
3、也可根据需要重新对分区进行规划,将原来的p0,p1,p2,p3,p4,p5分区重新成p0,p1,p2分区
实现语句如下:
Alter table order reorganize partition p0,p1,p2,p3,p4,p5 into (
partition p0 values less than(20000),
partition p1 values less than(30000),
partition p2 values less than(maxvalue)
)
注:拆分或合并分区统称为重新定义分区,修改、拆分、合并分区不会丢失数据。
重新定义分区如语句:Alter table order partition by hash(orderId) partitions 5;
表分区删除
使用drop partition 关键字
1、删除p0分区
实现语句如下:
Alter table order drop partition p0
--删除多个分区可用下面语句,用逗号隔开
Alter table order drop partition p0,p1
2、删除所有分区
实现语句如下:
Alter table order remove partitioning
注:这里有必要说明一下,删除分区会把分区所有数据进行删除等同执行delete语句,所以删除分区时要谨慎。建议如果数据有用,就不能做删除分区。
不定期将写
【高并发数据库设计水平分区之三篇】不同引擎的分区特性、分区的限制性
【高并发数据库设计水平分区之四篇】数据库服务器集群分区
【高并发数据库设计水平分区业务示例场景】