首页 > 数据库 > MySQL > 正文

mysql中如何删除分区

2024-07-24 12:33:17
字体:
来源:转载
供稿:网友
  这篇文章主要介绍了mysql如何删除分区的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql如何删除分区文章都会有所收获,下面我们一起来看看吧。
 
  在mysql中,可以利用alter语句配合“DROP PARTITION”来删除分区,“DROP PARTITION”的作用就是用于删除指定的分区,语法为“ALTER TABLE '表名' DROP PARTITION '分区名' ”。
 
  本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。
 
  mysql删除分区
 
  删除分区语法为:ALTER TABLE '表名' DROP PARTITION '分区名'
 
  清理分区数据为空,保留分区不删除,仅仅是清理数据,命令如下
 
  alter table bm_scenes_data_reminder truncate partition p20210104;
 
  删除分区
 
  alter table bm_scenes_data_reminder drop partition p20210104;
 
  删除后执行查看建表语句,可以看到p20210104分区没有了
 
  增加分区
 
  ##如果希望将刚删除的p20210104分区重新加回去?怎么办。先尝试直接执行增加分区命令试试
 
  ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210104 VALUES LESS THAN (738159) ENGINE = InnoDB);
 
  结果如下,说明是不可行的。
 
  mysql> ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210104 VALUES LESS THAN (738159) ENGINE = InnoDB);
 
  ERROR 1481 (HY000): MAXVALUE can only be used in last partition definition
 
  mysql>
 
  ##1步骤中不可行,提示必须是在最后一个分区的后面才可以这样增加。
 
  因此如果一定要加回p20210104这个分区(即需要在中间部分增加分区),只能将p20210104 后面的分区先全删除,再增加p20210104分区,再后p20210104 后面的分区重新加回去。操作如下:
 
  ##先删除p20210104分区后面的所有分区
 
  ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210105;
 
  ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210106;
 
  ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210107;
 
  ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210108;
 
  ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210109;
 
  ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210110;
 
  ALTER TABLE bm_scenes_data_reminder drop PARTITION future;
 
  ##增加p20210104分区
 
  ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210104 VALUES LESS THAN (738159) ENGINE = InnoDB);
 
  ##把p20210104分区后面的所有分区重新加回去
 
  ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210105 VALUES LESS THAN (738160) ENGINE = InnoDB);
 
  ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210106 VALUES LESS THAN (738161) ENGINE = InnoDB);
 
  ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210107 VALUES LESS THAN (738162) ENGINE = InnoDB);
 
  ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210108 VALUES LESS THAN (738163) ENGINE = InnoDB);
 
  ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210109 VALUES LESS THAN (738164) ENGINE = InnoDB);
 
  ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210110 VALUES LESS THAN (738165) ENGINE = InnoDB);
 
  ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION future VALUES LESS THAN MAXVALUE ENGINE = InnoDB);
 
  最后再查看一下ddl发现分区加回去了,但这种操作方式会把p20210104分区后面的所有分区数据删除,在正式线上环境中请慎。
 

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表