Mysql历史数据删除

文章讲述了运维中遇到的问题,即如何通过truncate、drop和delete三种方式清理MySQL中的大表数据。truncate虽能快速删除但需配合optimize释放空间,而drop速度快但会删除表结构;delete执行慢,可选择性删除数据。同时提到truncate会重置自增列值。
摘要由CSDN通过智能技术生成

一、数据清理(truncate方式)

收到运维同事提示,有台机器磁盘使用率过高
在这里插入图片描述
查看之后发现是数据库文件过大,磁盘本身500g,数据库单表文件占用300多g
在这里插入图片描述

表中存了一些历史数据,历史数据可以删除了,于是执行
truncate table XXX 删除表数据。
表数据删除后,本以为完事了,查询了一下磁盘使用率,发现使用率并没有降下来。
看了一下,表对应的ibd文件并没有变化。
于是再次执行
optimize table XXX
才将表空间释放。
在这里插入图片描述

二、MySQL数据清理方式

MySQL数据清理有三种方式
drop:DDL 语句,执行速度最快,全量删除表数据;除此之外,还会删除表结构以及表的索引、约束和触发器(如果表还在使用不要使用该命令)。
truncate:DDL 语句,执行速度较快,全量删除表数据,表结构以及表的索引、约束和触发器保留;需要配合optimize 命令来进一步优化磁盘空间(有一定执行时间,需考虑对业务影响)
delete: DML 语句,执行速度最慢,但是可以选择性删除部分数据,表结构以及表的索引、约束和触发器保留。
truncate与delete区别:
truncate 表数据全部清空,会重置自增列为 1,而 delete 就算全部清空数据,也不会重置自增列。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值