十五、mysql 分区之 分区管理

1.mysql分区处理分区字段NULL值的方式
    1.range分区null被当作最小值处理
    2.list分区null值必须被枚举出来,否则将出错
    3.hash/key分区 null值当作0处理

2.RANGE && LIST 分区管理
    1.删除分区
        alter table emp drop partition p0; //删除emp的p0分区,注意也会同时删除该分区的数据
    2.增加分区
        alter table emp add partition (partition p5 values less than(5000));
        //不能增加已存在分区名的分区
        //range分区不能添加比目前最大分区的最大值小的分区,例如目前p4分区最大值为6000,那么p5添加成5000就会报错的
        //list分区不能添加已经在其他分区有枚举数据的分区,例如p4包含了'PHP'这个,那么P5就不能再包含'PHP'了
    3.重定义分区(range)
        alter table  emp reorganize partition p5 into (
            partition p5 values less than (3000),
            partition p6 values less than (4000),
            partition p7 values less than (5000)
        );
        //原本p5分区的最大值为5000,现在将p5拆分成p5,p6,p7 各存放一千
        //拆分分区只能拆成相邻,不能是p5,6,8...
        //拆分分区不能改变原本分区的模式,比如range不能拆成list
    4.重定义分区(list)
        alter table emp reorganize partition p4,p5,p6 into {
            partition p4 values in (1,2,3,4,5,6,7,8,9,10)
        );
        //比如之前的p4p5p6包含了1234567810这10个数字,那么现在全部归纳到p4中来
        //list不支持range的分区功能,但可以通过拆分跟添加来实现重分区

3.HASH && KEY 增加分区
    alter table emp coalesce partition 3; 给emp表删除2个分区 //注意会删除数据
    alter table emp add partition partitions 8 ;//增加8个分区
原文地址:https://www.cnblogs.com/shibazi/p/3832858.html