physar / Datenbankadministration für Sysadmins / Speicherwachstum und Routinewartung

Speicherwachstum und Routinewartung

Warum eine Datenbank wächst, obwohl nichts hinzukommt: Aufräumvorgänge, veraltete Versionen, Fragmentierung und die Frage, wann Wartung mehr schadet als nützt.

Gelöscht ist nicht weg

Einführung · 5 Abschnitte · ~15 Min Lesezeit · Stand

Betriebsfrage

Eine Tabelle, aus der ebenso viel gelöscht wie eingefügt wird, wächst trotzdem. Das ist kein Fehler, sondern die Folge davon, wie Datenbanken gleichzeitige Zugriffe ermöglichen — und es erklärt die meisten unerwarteten Platzprobleme.

Mentales Modell

  1. Ändern
  2. Alte Version behalten
  3. Freigeben
  4. Platz wiederverwenden

Um Lesern eine konsistente Sicht zu geben, bleiben ältere Zeilenversionen erhalten, solange irgendeine Transaktion sie noch sehen könnte. Erst danach kann ein Aufräumvorgang den Platz zur Wiederverwendung freigeben — an das Betriebssystem zurück geht er meist nicht.

Was Aufräumen blockiert

  • Eine sehr lange offene Transaktion hält alte Versionen fest — auch solche, die sie nie lesen wird.
  • Eine unterbrochene Replikationsverbindung kann denselben Effekt haben.
  • Ist der Aufräumvorgang dauerhaft langsamer als die Änderungsrate, wächst der Rückstand monoton.

Reorganisation

Regelmäßiges AufräumenLäuft nebenher und hält den Zustand stabil. Es gibt Platz zur Wiederverwendung frei.
Vollständige ReorganisationGibt Platz an das Betriebssystem zurück, sperrt dabei aber typischerweise die Tabelle. Auf großen Tabellen ist das ein Ausfall.
StatistikenSind eine eigene Aufgabe. Sie beeinflussen die Planwahl, nicht den Platzbedarf.

Route

Gelesen ist nicht geprüft: Im Modul entscheidest du die Fälle selbst und siehst danach, wo dein Urteil trägt.

3 Checks starten →

Modul-Aufbau

EINFÜHRUNGGelöscht ist nicht weg~15 Min
ADR-001PLATZWACHSTUMsolide
ADR-002REORGANISATIONsenior
FLOW-003MISSION · WARTUNGSFOLGEsolide

Quellen

  1. 01postgresql.org/docs/current/routine-vacuuming.html
  2. 02postgresql.org/docs/current/transaction-iso.html
  3. 03postgresql.org/docs/current/continuous-archiving.html

Verfasst von Julian Zentgraf