我有一个使用InnoDB存储引擎的MySQL表;它包含大约200万个数据行.当我从表中删除数据行时,它没有释放分配的磁盘空间.运行optimize table命令后,ibdata1文件的大小也没有减小.

有没有办法从MySQL中回收磁盘空间?

我的处境很糟糕;该应用程序在大约50个不同的位置运行,现在几乎所有位置都出现了磁盘空间不足的问题.

推荐答案

MySQL不会减少IBMData1的大小.曾经即使使用optimize table从已删除的记录中释放空间,它也会在以后重新使用.

另一种方法是将服务器配置为使用innodb_file_per_table,但这将需要备份、删除数据库和恢复.积极的一面是.表的ibd文件在optimize table之后减少.

Mysql相关问答推荐

MySQL在带有特定属性值上的对象的数组的杨森对象中搜索

在MySQL中存储一条帖子的点赞数量

在MySQL CLI中,是否有自动完成过程的方法?

我可以在姓名和姓名日期之间进行搜索吗?

发生的原因及解决方法

Travis 构建失败并出现错误 LOAD DATA LOCAL INFILE 文件请求因访问限制而被拒绝

如何在Mysql中使用With和Values

根据 Power Query 中的条件替换值

拆分列值并适当地返回拆分值

mysql 执行注释部分

即使我的约束是正确的,如何解决 errno: 150 外键约束形成错误?

此插页中的X是什么> X'3C2F756C3E'

为什么 ORDER BY 'id' 'desc' 不返回语法错误?

MySQL 视图

SQL UPDATE中的str_replace?

SQL - 如何找到列中的最高数字?

如何在特定数据库中创建表?

在连接条件上使用 IS NULL 或 IS NOT NULL - 理论问题

将 mySQL 查询作为 cron 作业(job)运行?

如何从两个不同的日期获得年份差异?