Heim  >  Fragen und Antworten  >  Hauptteil

MySQL InnoDB gibt nach dem Löschen von Datenzeilen aus der Tabelle keinen Speicherplatz frei

Ich habe eine MySQL-Tabelle, die die InnoDB-Speicher-Engine verwendet; sie enthält etwa 2 Millionen Datenzeilen. Wenn ich Datenzeilen aus der Tabelle lösche, wird der zugewiesene Speicherplatz nicht freigegeben. Auch nach der Ausführung des Befehls optimize table verringerte sich die Größe der Datei ibdata1 nicht.

Gibt es eine Möglichkeit, Speicherplatz von MySQL zurückzugewinnen?

Ich bin in einer schlechten Situation; die App läuft an etwa 50 verschiedenen Standorten und jetzt geht mir an fast allen davon der Speicherplatz aus.

P粉148434742P粉148434742371 Tage vor654

Antworte allen(2)Ich werde antworten

  • P粉183077097

    P粉1830770972023-10-15 17:09:49

    我自己也遇到了同样的问题。

    发生的情况是,即使删除数据库,innodb 仍然不会释放磁盘空间。我必须导出,停止mysql,手动删除文件,启动mysql,创建数据库和用户,然后导入。感谢上帝,我只有 200MB 的行,但它节省了 250GB 的 innodb 文件。

    设计失败。

    Antwort
    0
  • P粉340980243

    P粉3409802432023-10-15 16:24:36

    MySQL 不会减小 ibdata1 的大小。曾经。即使您使用优化表来释放已删除记录所使用的空间,它稍后也会重用它。

    另一种方法是将服务器配置为使用 innodb_file_per_table,但这需要备份、删除数据库和恢复。积极的一面是,在 优化表格

    Antwort
    0
  • StornierenAntwort