Meine ibdata-Datei ist sehr groß, zumindest scheint sie mir sehr groß zu sein. Ist das übertrieben oder nicht so schlimm?
-rw-rw---- 1 mysql mysql 15G Apr 18 10:11 ibdata1
Meine ibdata-Datei ist sehr groß, zumindest scheint sie mir sehr groß zu sein. Ist das übertrieben oder nicht so schlimm?
-rw-rw---- 1 mysql mysql 15G Apr 18 10:11 ibdata1
Antworten:
Wenn Sie show table status
auf einer Tabelle ausgeführt werden und das Data_free
Feld den größten Teil der ibdata1
Dateigröße ausmacht, wird möglicherweise viel Speicherplatz verschwendet. Durch viel Einfügen / Löschen wird dies zu einem Problem. Wenn dies der Fall ist und vorübergehende Einfügungen und Löschungen den Großteil Ihrer Daten ausmachen, haben Sie ein gutes Argument für eine Datei pro Tabelle.
Das ist jedoch kein automatisches "Ja". Es wird weltweit viel über die interne Fragmentierung in InnoDB-Dateien gesprochen, aber wenn Sie sie als Datei pro Tabelle in ein Dateisystem einfügen, wird Ihre Fragmentierung nur auf die Dateisystemebene anstatt auf die Datenbankebene verschoben.
Stellen Sie sich Ihre InnoDB-Datei als Dateisystem und nicht als Datei vor. Wenn Sie viele Dateien haben, benötigen Sie ein großes Dateisystem.
Zum größten Teil können Dateisysteme sehr gut skaliert werden, um Terabyte an Daten und unzählige Dateien zu verarbeiten. Manchmal treten Probleme mit einer schlechten Indizierung auf (z. B. Begrenzung der Anzahl der Dateien in einem Verzeichnis vor einer Auswirkung auf die Leistung), aber zum größten Teil kann das moderne Dateisystem weit in den Terabyte-Bereich vordringen.
InnoDB funktioniert genauso. Die Größe Ihrer Datendatei kann sehr groß sein ... und wie bei großen Dateisystemen kann dies zu Problemen beim Sichern Ihrer Daten führen. Genauso wie das Aufteilen Ihres Dateisystems in mehrere Partitionen bei diesem Problem nicht hilft, hilft auch nicht der Versuch, innodb zu manipulieren. Obwohl Sie innodb_file_per_table verwenden können , empfehle ich es selten.
Ähnlich wie bei Ihrem Dateisystem besteht die bessere Antwort darin, die Grenzen intern zu kennen und darin zu arbeiten. Indizes verstehen und entsprechend anwenden. Versuchen Sie nicht, InnoDB aufzuteilen, es ist nicht dafür gedacht.
Da ich Schwierigkeiten habe, das Konzept konstruktiv zu vermitteln, lesen wir hier kurz, dass Wörter so besser sind als ich: Terabyte sind keine großen Datenmengen, Petabyte .
Ich erinnere mich an eine wirklich sehr alte MySQL-Marketingfolie, auf der der Kunde ein Data Warehouse mit einigen Terabyte betrieb. Vor vielen Jahren. InnoDB oder MyISAM, beide würden funktionieren. Dies ist Standard MySQL-Zeug von der Stange.
Schwitzen Sie nicht eine 15 GB Datenbank.
InnoDB free: 7364608 kB
ibdata-Dateien werden nicht verkleinert. Wenn Sie kürzlich einige Tabellen gelöscht oder viele Zeilen entfernt haben, gibt innodb in Ihrer Konfiguration den freien Speicherplatz nicht an das Dateisystem zurück. Ich würde dir vorschlagen:
Auf diese Weise können Sie den Speicherplatz zurückfordern, wenn Sie eine Innodb-Tabelle / Datenbank löschen. Zugeordnete IDB-Dateien werden sofort entfernt.