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

Wird der von gelöschten Zeilen belegte Speicherplatz wiederverwendet?

Es ist Paranoia :)

DBs wachsen nicht unnötig an Größe, aber aus Leistungsgründen wird auch kein Speicherplatz freigegeben.

Was Sie höchstwahrscheinlich gehört haben, ist, dass beim Löschen von Datensätzen der Speicherplatz nicht an das Betriebssystem zurückgegeben wird . Stattdessen wird es als leerer Speicherplatz für die DB zur späteren Wiederverwendung aufbewahrt.

Das liegt daran:

  • DB benötigt etwas HD-Speicherplatz, um seine Daten zu speichern; wenn es keinen Platz hat, reserviert es zuerst etwas leeren Platz.
  • Wenn Sie eine neue Zeile einfügen, wird ein Teil dieses Platzes verwendet.
  • Wenn Ihnen der freie Speicherplatz ausgeht, wird ein neuer Block reserviert und so weiter.
  • Nun, wenn Sie einige Zeilen löschen , um zu verhindern, dass immer mehr Blöcke reserviert werden, wird sein Speicherplatz freigehalten, aber nie an das Betriebssystem zurückgegeben, sodass Sie ihn später wieder verwenden können, ohne dass neue Blöcke reserviert werden müssen.

Wie Sie sehen können, ist Leerzeichen ist wiederverwendet, aber nie zurückgegeben. Das ist der entscheidende Punkt zu Ihrer Frage.