首先,我们需要了解一下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删除数据后释放磁盘空间的操作方法
基础教程推荐
- 新手必学的mysql外键设置方式 2023-08-09
- Centos7 下mysql重新启动MariaDB篇 2023-07-24
- PostgreSQL死锁了怎么办及处理方法 2023-07-21
- SQL Server如何通过SQL语句直接操作另一台服务器上的SQL SERVER的数据 2023-07-28
- Docker中部署mysql服务的方法及遇到的坑 2023-12-06
- MySQL中count()和count(1)有何区别以及哪个性能最好详 2022-09-12
- MySQL如何判断字符串为NULL或者为空字符串 2022-10-23
- MongoDB对Document(文档)的插入、删除及更新 2023-07-16
- idea配置检查XML中SQL语法及书写sql语句智能提示的方法 2023-12-08
- mongodb root用户创建数据库提示not master的解决 2023-07-16