最近我将MySQL DB从一台服务器复制到另一台服务器。这意味着我从Master DB中清除了许多行。因此,经过一段时间复制正确完成。我在两个DB中验证了数据的数量,它是一样的。
之后我只使用以下查询验证了slave中的DB大小。
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;
通过这个查询,我得到了DB的大小。它是60 GB。
我的问题
我有一个名为 tableName.ibd 的文件" ProgramData-> Data-> DBName"夹。该文件占用500GB内存。
所以我的问题是为什么这个文件占用了这么多大小,虽然我的数据库大小本身只有60GB。
我还在程序数据中验证了Ibdata文件大小。它只有1GB。
请帮我解决这个问题。如何清除此文件。对清除这个有什么影响。
答案 0 :(得分:2)
删除数据时文件会碎片化。如果你删除了表中的大多数记录,那么大多数记录都是空的是正常的。
最简单的整理方式'它是通过运行ALTER TABLE tablename FORCE
。这会进行无操作更改并重建表。
60GB的表需要一段时间才能重建,所以在运行它时要小心。