首先,我们需要了解一下MySQL的删除操作。MySQL 的删除操作实际上是将数据行标记为“已删除”,并不是真正物理删除数据。这样做是为了方便数据恢复和回滚操作。因此,虽然数据被标记为删除,但是磁盘空间并没有被立即释放。
首先,我们需要了解一下MySQL的删除操作。MySQL 的删除操作实际上是将数据行标记为“已删除”,并不是真正物理删除数据。这样做是为了方便数据恢复和回滚操作。因此,虽然数据被标记为删除,但是磁盘空间并没有被立即释放。
要释放磁盘空间,我们需要使用MySQL的OPTIMIZE TABLE
命令。OPTIMIZE TABLE
命令将会重新组织表的物理存储,将删除行占用的空间释放掉。
下面是具体的操作步骤:
- 登录MySQL数据库并选择要进行操作的数据库:
mysql -u root -p
use database_name;
- 查看表空间的使用情况,按表大小对其进行排序:
SELECT table_name, table_schema, round(((data_length + index_length) / 1024 / 1024), 2) as `大小(MB)`
FROM information_schema.TABLES WHERE table_schema = '<database>' ORDER BY (`大小(MB)`) DESC;
- 对需要进行空间释放的表执行
OPTIMIZE TABLE
命令:
OPTIMIZE TABLE table_name;
示例1:
假设我们有一个名为users
的表,其中存储了用户信息,其中已有一部分数据被删除:
DELETE FROM users WHERE id < 1000;
我们可以通过以下命令对表进行优化:
OPTIMIZE TABLE users;
示例2:
假设我们有一个名为logs
的表,其中存储了大量的日志信息,我们已经删除了过期的数据。查看表空间使用情况,可以发现该表空间较大:
SELECT table_name, table_schema, round(((data_length + index_length) / 1024 / 1024), 2) as `大小(MB)`
FROM information_schema.TABLES WHERE table_schema = '<database>' AND table_name = 'logs';
执行以下命令对表进行优化:
OPTIMIZE TABLE logs;
执行完毕后再次查看表空间使用情况,发现空间已被释放。
本文标题为:MySQL delete删除数据后释放磁盘空间的操作方法
- Postgresql源码分析returns setof函数oracle管道pipelined 2023-07-21
- MySQL 中常见的几种高可用架构部署方案解析 2023-07-26
- PostgreSQL聚合函数的分组排序使用示例 2023-07-21
- Row_number()函数用法小结 2023-07-29
- 高可用Redis服务架构微信牛牛棋牌平台出售分析与搭建 2023-09-12
- 详细Redis入门教程 2023-09-11
- Oracle存储过程新手入门教程(通俗理解存储过程) 2023-07-24
- 关于Python/Java 远程连接Redis失败的问题 2023-09-12
- redis 常用数据汇总 2023-09-12
- MongoDB中实现多表联查的实例教程 2023-07-16