Ich versuche den Inhalt der Rückgabewerte dieser Funktion zu verstehen. Aus der Dokumentation:
tuple_percent : Percentage of live tuples
dead_tuple_percent : Percentage of dead tuples
Wenn ich die zwei Werte zusammenzähle, sind das bei mir nie 100%. Was gibt es den sonst noch für Einträge?
Auch ist mir nicht klar, wenn ich z.B. weniger als 1% bei dead_tuple_percent habe, warum es dann free_percent von 17% gibt.
Ab wieviel “bloat” schlägt da welcher Wert auf die Performance?
Christian
gelöscht, aber noch nicht von Vacuum als solches markiert.
Ab wieviel % Bloat zum Problem wird kann man nicht so pauschal sagen. 10-20% sind i.d.R. aber normal und kein Problem.
Ich habe es nicht ganz begriffen. Hier ein Beispiel:
table_len = 754'106'368
tuple_count = 9'674'509
tuple_len = 541'772'504
tuple_percent = 71.84
dead_tuple_count = 1'543
dead_tuple_len = 86'408
dead_tuple_percent = 0.01
free_space = 133'036'776
free_percent = 17.64
Diese Tabelle hat knapp 10 Millionen Datensätze und braucht 754MB Speicher. Soweit ist mir klar.
Ich lösche jetzt ein Datensatz, dann wäre tuple_count eins kleiner, dead_tuple_count eins grösser oder?
Dann mache ich ein VACUUM. Bei den Indices werden 1119 Zeilenversionen entfernt. Und für die Tabelle habe ich folgende Meldung
INFO: »rankingclub«: 305 entfernbare, 484652 nicht entfernbare Zeilenversionen in 4554 von 92054 Seiten gefunden
DETAIL: 1543 tote Zeilenversionen können noch nicht entfernt werden, ältestes xmin: 115307780
Es gab 528144 unbenutzte Itemzeiger.
0 Seiten wegen Buffer-Pins übersprungen, 4490 eingefrorene Seiten.
0 Seiten sind vollkommen leer.
Wenn ich dann wieder ein pgstattuple() mache, sind die obigen Werte unverändert. Also free_space bleibt.
Christian
du hast offenbar noch eine Transaktion laufen (115307780), wegen der Vacuum den Platz nicht freigeben kann, das Tupel muß noch sichtbar bleiben für diese Transaktion.