Speicherverwaltung bei InnoDB

Questioner

Neuer Benutzer
Beiträge
4
Hallo Leute,

die Standardeinstellung von InnoDB ist ja bekanntlich, dass alle Daten aller Tabellen in eine Datei geschrieben werden. Werden Daten aus einer Tabelle gelöscht, wird die Datei jedoch nicht kleiner, da der Speicherplatz sozusagen reserviert wird.

Jetzt würde mich nur interessieren, ob andere Tabellen der selben Datenbank diesen "freien" Speicher auch nutzen können, oder ob dieser für jede Tabelle seperat verwaltet wird.

Sagen wir Tabelle X hat 50MB und Tabelle Y 10MB. Die gesamtgröße der ibdata1 hat demnach ca. 60MB.
Lösche ich nun aus Tabelle X soviele Daten, dass sie eigentlich nur noch 5MB hätte, bleibt die Größe der ibdata1 konstant. Wächst diese aber weiter an, wenn ich Tabelle Y mit Daten fülle oder nutzt diese dann den freien Platz, den die Tabelle X hinterlassen hat?

Liebe Grüße
Questioner
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.612
Hallo Leute,

die Standardeinstellung von InnoDB ist ja bekanntlich, dass alle Daten aller Tabellen in eine Datei geschrieben werden. Werden Daten aus einer Tabelle gelöscht, wird die Datei jedoch nicht kleiner, da der Speicherplatz sozusagen reserviert wird.

Jetzt würde mich nur interessieren, ob andere Tabellen der selben Datenbank diesen "freien" Speicher auch nutzen können, oder ob dieser für jede Tabelle seperat verwaltet wird.

Sagen wir Tabelle X hat 50MB und Tabelle Y 10MB. Die gesamtgröße der ibdata1 hat demnach ca. 60MB.
Lösche ich nun aus Tabelle X soviele Daten, dass sie eigentlich nur noch 5MB hätte, bleibt die Größe der ibdata1 konstant. Wächst diese aber weiter an, wenn ich Tabelle Y mit Daten fülle oder nutzt diese dann den freien Platz, den die Tabelle X hinterlassen hat?

Liebe Grüße
Questioner

Probier es aus. Falls man schon MySQL/InnoDB will, dann will man eigentlich innodb_file_per_table.
 

Questioner

Neuer Benutzer
Beiträge
4
Na dann hätte ich ja nicht fragen müssen... Bei innodb_file_per_table ist es ja definitiv so, dass jede Tabelle ihren eigenen Speicherbereich vorhält. D.h. die gesamte Kapazität steigt beim Füllen von Tabelle Y weiter an, obwohl in der Datei von Tabelle X noch genügend Platz vorhanden wäre...
Daher wollte ich wissen ob freigewordene Kapazitäten von allen Tabellen genutzt werden können, da dies ja effizienter wäre.
Aber dass Du nicht viel von MySQL weißt, hast mir ja schon einmal geschrieben und Du bist auch der einzige der hier antwortet. Vielen Dank dafür.
Ansonsten scheint dieses Forum hier aber (zumindest im MySQL-Bereich) ziemlich tot zu sein. Ich versuche mein Glück wohl besser mal wo anderes...
Aber trotzdem vielen Dank für deine Mühen.
 
Werbung:

enseth439

Aktiver Benutzer
Beiträge
25
Das ist allerdings auch keine leichte Frage. Es kommt wohl drauf an wie die Daten freigegeben wurden. Bei einem Drop Table soll das funktionieren, bei einzelnen Einträgen kommt es wohl darauf an wie die zusammenhängen. Ich würde es aber auch ausprobieren und schauen. Dann hat man das Verhalten sicher ermittelt.
 
Oben