最近我将 MySQL 数据库从一台服务器复制到另一台服务器。与此同时,我已经从主数据库中清除了许多行。所以一段时间后复制就可以正确完成。我验证了两个数据库中的数据计数,它是相同的。
之后,我只是使用以下查询验证了从站中的数据库大小。
SELECT table_schema "Schema_Name", Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" FROM information_schema.tables GROUP BY table_schema;
通过这个查询我得到了数据库的大小。是 60 GB。
我的问题
我在“ProgramData->Data->DBName”文件夹中有一个名为tableName.ibd的文件。该文件占用500GB内存。
所以我的问题是,为什么这个文件占用这么大的大小,尽管我的数据库大小本身只有 60GB。
我还验证了程序数据内的 Ibdata 文件大小。它只有1GB。
请帮我解决这个问题。如何清除该文件。清除这个会有什么影响。
最佳答案
当数据被删除时,文件会变得碎片化。如果您删除了表中的大部分记录,那么大部分记录都会为空,这是正常的。
对其进行“碎片整理”的最简单方法是运行ALTER TABLE tablename FORCE
。这会执行无操作更改并重建表。
60GB 的表需要一段时间才能重建,因此运行时要小心。
关于MySQL tableName.Ibd 文件大小巨大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45839537/