📐 Mathematische Formel & Herleitung
S_{disk} = N_{rows} \times \left( S_{row} + 27_{\text{header}} + N_{idx} \times 32 \right) \times (1 + b_{bloat}) 🔬 Methodik, Richtwerte & Fachanalyse
In PostgreSQL benötigt jede einzelne Zeile einen 23-Byte-Tuple-Header plus 4-Byte-Item-Pointer (mindestens 27 Bytes Overhead pro Zeile, noch bevor Nutzdaten gespeichert werden).
Für hohe Performance sollten die aktiven B-Tree-Indizes sowie der heiße Working-Set-Anteil vollständig in den Arbeitsspeicher (`shared_buffers` + OS Page Cache) passen.
🛠️ Schritt-für-Schritt-Anleitung zur Berechnung
- Gesamtanzahl der Tabellenzeilen (in Millionen): Legen Sie den Parameter „Gesamtanzahl der Tabellenzeilen (in Millionen)“ fest (Standardwert: 50).
- Durchschnittliche Nutzdaten pro Zeile (Bytes): Legen Sie den Parameter „Durchschnittliche Nutzdaten pro Zeile (Bytes)“ fest (Standardwert: 280).
- Anzahl der B-Tree- / Sekundärindizes: Legen Sie den Parameter „Anzahl der B-Tree- / Sekundärindizes“ fest (Standardwert: 4).
- MVCC-Bloat, Fillfactor & WAL-Reserve (%): Legen Sie den Parameter „MVCC-Bloat, Fillfactor & WAL-Reserve (%)“ fest (Standardwert: 25).