Februar 20, 2022

MySQL :: Re: wie eine MySQL-Datenbank schrumpfen

Richtig. Dies ist eine Einschränkung der Shared Tablespace-Datei von InnoDB. Es wäre eine sehr teure Operation für den MySQL-Server, den verwendeten Speicherplatz in der Tablespace-Datei zu komprimieren und die Datei zu verkleinern. Stellen Sie sich vor, Sie haben eine 100-GB-Tablespace-Datei und möchten eine Neuerstellung durchführen, um sie zu komprimieren. In der Regel erfordern MySQL-Tabellenwiederherstellungen, dass sowohl der alte als auch der neue Speicher während des Vorgangs gleichzeitig auf der Festplatte vorhanden sind.
Das Verhalten von InnoDB besteht also darin, den leeren Bereich zu belassen und ihn für das spätere Einfügen neuer Zeilenversionen zu verwenden.
Siehe:
Fehler # 1287 http://bugs.mysql.com/bug.php?id=1287
Fehler #1341 http://bugs.mysql.com/bug.php?id=1341
Eine Lösung zum Erstellen eines gemeinsam genutzten InnoDB-Tablespace lautet:
1. Sichern Sie * alle * InnoDB-Tabellen mit mysqldump.
2. Löschen Sie alle InnoDB-Tabellen.
3. Löschen Sie die ibdata1-Datei physisch an der Dateisystemschnittstelle.
4. Starten Sie MySQL Server neu, wodurch eine neue, kleine Tablespace-Datei erstellt wird.
5. Stellen Sie alle Ihre InnoDB-Tabellen wieder her, wodurch die Tablespace-Datei nach Bedarf erweitert wird.
Eine andere Lösung besteht darin, die Option zum Speichern von InnoDB-Tabellen in einer separaten Datei pro Tabelle zu verwenden. Siehe http://dev.mysql.com/doc/refman/5.0/en/multiple-tablespaces.html Wenn Sie dies tun, sollten Sie OPTIMIZE TABLE oder ALTER TABLE für jede InnoDB-Tabelle verwenden können, die Sie verkleinern möchten. Dies soll den Wiederaufbau der .ibd-Datei für die einzelne Tabelle.
Grüße,
Bill K.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.