Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Die MySQL-Datendatei wird nicht verkleinert

Die Dateigröße von InnoDB-Tablespaces wird niemals automatisch reduziert, egal wie viele Daten Sie löschen.

Was Sie tun könnten, obwohl es viel Aufwand ist, ist, einen Tablespace für jede Tabelle zu erstellen, indem Sie

setzen
innodb_file_per_table

Der lange Teil dabei ist, dass Sie ALLE DATEN vom MySQL-Server exportieren müssen (das Einrichten eines neuen Servers wäre einfacher) und die Daten dann erneut importieren müssen. Anstelle einer einzigen ibdata1-Datei, die die Daten für jede einzelne Tabelle enthält, finden Sie viele Dateien namens tablename.ibd die die Daten nur für eine einzige Tabelle enthalten.

Danach:

Wenn Sie dann viele Daten aus Tabellen löschen, können Sie mysql die Datendatei neu erstellen lassen, indem Sie

ausgeben
alter table <tablename> engine=myisam;

zu MyIsam wechseln (und die InnoDB-Datendatei für diese Tabelle löschen lassen) und dann

alter table <tablename> engine=innodb;

um die Tabelle neu zu erstellen.