iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql如何删除分区
  • 316
分享到

mysql如何删除分区

2024-04-02 19:04:59 316人浏览 独家记忆
摘要

这篇文章主要介绍了Mysql如何删除分区的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql如何删除分区文章都会有所收获,下面我们一起来看看吧。

这篇文章主要介绍了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分区后面的所有分区数据删除,在正式线上环境中请慎

案例

系统有操作系统表sys_log,实现每天删除90天前的分区并同时建一个4天后的分区(即每天将4天后的分区创建表),步骤如下:

##新建普通表,只执行一次

CREATE TABLE `sys_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `begin_time` datetime DEFAULT NULL COMMENT '开始时间',
  `end_time` datetime DEFAULT NULL COMMENT '结束时间',
  `spend_mills` int(11) DEFAULT NULL COMMENT '运行时长,单位ms',
  `username` varchar(100) DEFAULT NULL COMMENT '用户id',
  `log_status` int(11) NOT NULL DEFAULT '0' COMMENT '运行状态,[0]成功[1]失败',
  `code` int(11) NOT NULL DEFAULT '0' COMMENT '错误码',
  `remote_addr` varchar(50) DEFAULT '' COMMENT '远程地址',
  `request_uri` varchar(255) DEFAULT NULL COMMENT '请求路径',
  `user_agent` text COMMENT '用户代理',
  `req_data` text NOT NULL COMMENT '请求参数',
  `resp_data` longtext NOT NULL COMMENT '返回结果',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_log_begintime` (`begin_time`) USING BTREE COMMENT '系统日志的beginTime字段索引'
) ENGINE=Innodb DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC

##修改成分区表,只执行一次,留一个当前时间的分区和将来的future分区

ALTER TABLE `sys_log` DROP PRIMARY KEY, ADD PRIMARY KEY(`id`,`begin_time`);
alter table sys_log partition by RANGE (to_days(begin_time)) (
    PARTITION p20210816 VALUES LESS THAN (738383),
    PARTITION future VALUES LESS THAN MAXVALUE
);

##每天执行以下的分区操作,进行增加一天的分区,如

ALTER TABLE sys_log drop PARTITION future;
ALTER TABLE sys_log ADD PARTITION (PARTITION p20210817 VALUES LESS THAN (738384) ENGINE = InnoDB);
ALTER TABLE sys_log ADD PARTITION (PARTITION p20210818 VALUES LESS THAN (738385) ENGINE = InnoDB);
ALTER TABLE sys_log ADD PARTITION (PARTITION p20210819 VALUES LESS THAN (738386) ENGINE = InnoDB);
ALTER TABLE sys_log ADD PARTITION (PARTITION future VALUES LESS THAN MAXVALUE ENGINE = InnoDB);

##定时任务配置,每天执行一次分区的清理与创建

30 4 * * * /bin/python /home/testuser/SyslogPartitionClear.py >/dev/null 2>&1

关于“mysql如何删除分区”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“mysql如何删除分区”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: mysql如何删除分区

本文链接: https://www.lsjlt.com/news/72500.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql如何删除分区
    这篇文章主要介绍了mysql如何删除分区的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql如何删除分区文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • mysql如何删除分区表数据
    要删除分区表的数据,可以使用以下语法: DELETE FROM table_name PARTITION (partitio...
    99+
    2024-04-15
    MySQL
  • linux如何删除分区
    这篇文章主要介绍“linux如何删除分区”,在日常操作中,相信很多人在linux如何删除分区问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux如何删除分区”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-22
  • sqlserver表分区如何删除
    要删除SQL Server表的分区,可以使用以下步骤: 首先,确定要删除的表名和分区方案名。 使用ALTER TABLE语句,将表...
    99+
    2024-04-20
    sqlserver
  • win7100m隐藏分区如何删除
    这篇文章主要介绍“win7100m隐藏分区如何删除”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win7100m隐藏分区如何删除”文章能帮助大家解决问题。win7100m隐藏分区删除方法:按下“wi...
    99+
    2023-07-01
  • sql如何删除分区表的分区数据
    要删除分区表的分区数据,可以使用以下SQL语句: ALTER TABLE table_name DROP PARTITION par...
    99+
    2024-04-09
    sql
  • oracle中如何删除某个分区
    在Oracle数据库中删除某个分区可以通过以下步骤实现: 首先,确保你拥有足够的权限来删除分区,通常需要有ALTER TABLE...
    99+
    2024-04-23
    oracle
  • win11磁盘恢复分区如何删除
    本篇内容主要讲解“win11磁盘恢复分区如何删除”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“win11磁盘恢复分区如何删除”吧!首先右键开始菜单打开“运行”在其中输入“cmd”并“确定”打开命...
    99+
    2023-07-02
  • oracle如何删除多个分区数据
    要删除多个分区数据,可以使用以下步骤: 确保你有足够的权限来删除分区数据。通常需要具有DROP ANY TABLE 或 DROP...
    99+
    2024-04-20
    oracle
  • 数据库中分区表如何删除分区、分区对应的tablespace、datafile
    这篇文章给大家分享的是有关数据库中分区表如何删除分区、分区对应的tablespace、datafile的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 ...
    99+
    2024-04-02
  • oracle如何删除没有数据的分区
    要删除Oracle数据库中没有数据的分区,可以使用以下步骤:1. 检查分区是否有数据:可以使用以下查询语句检查分区中是否有数据:``...
    99+
    2023-08-23
    oracle
  • mysql如何删除ibdata1
    今天小编给大家分享一下mysql如何删除ibdata1的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2023-02-16
    mysql ibdata1
  • 如何删除mysql-bin
    本篇内容介绍了“如何删除mysql-bin”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2023-02-16
    mysql mysql-bin
  • mysql如何删除表
    这篇文章给大家分享的是有关mysql如何删除表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在mysql中,可以利用“DORP TABLE”语句来删除数据表,通用语法格式“DRO...
    99+
    2024-04-02
  • centos如何删除mysql
    这篇文章主要为大家展示了“centos如何删除mysql”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“centos如何删除mysql”这篇文章吧。 ...
    99+
    2024-04-02
  • mysql如何删除slave
    这篇文章将为大家详细讲解有关mysql如何删除slave,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 mysql删除slave信息的方法:1...
    99+
    2024-04-02
  • 如何删除mysql event
    这篇“如何删除mysql event”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何删除...
    99+
    2024-04-02
  • 怎么删除windows分区
    本篇内容介绍了“怎么删除windows分区”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!删除windows分区的方法:第一步,右键“此电脑”...
    99+
    2023-06-30
  • mysql如何删除delete
    这篇“mysql如何删除delete”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇...
    99+
    2023-04-22
    mysql delete
  • centos怎么删除分区
    要删除CentOS中的分区,可以按照以下步骤操作:1. 首先,确保你有管理员权限(root用户)。2. 打开终端,并使用命令`fdi...
    99+
    2023-08-19
    centos
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作