Also bei dieser die aktuell autovacuumiert wird, werden ab und zu neue Einträge hinzugefügt aber sehr oft Datensätze geupdatet.
Dann gibt es eine Tabelle in welcher extrem oft neue Datensätze hinzugefügt werden.
Bei den restlichen Tabellen kommen nicht ganz so oft neue Datensätze hinzu
Vacuum hat die Aufgabe, alte und nicht mehr benötigte Speicherplätze innerhalb einer Tabelle freizugeben.
Bei einer Tabelle, die nur anwächst, gibt es logischerweise keine freizugebenden Speicherplätze. Daher gibt es doch auch keinen Autovacuum Lauf.
Du kannst dir mal die Statistiken für die Tabellen in pg_stat_user_tables anschauen, dort sind die Spalten mit dead Tuples und live Tuples interessant. Die regeln, ob Autovacuum sich die Tabelle überhaupt anschaut.
Bei einer Tabelle habe ich aber bei Live und dead tuple werte von rund 6000.
Und diese Tabelle wird nicht von Autovacuum vacuumiert…
Und wenn ich das richtig verstehe und bei dead tuple rund 6000 habe, sollte das autovacuum dennoch durchlaufen und diesen Speicherplatz freigeben oder nicht?
Ich habe das mal nachgerechnet und bemerkt, das es wegen der hohen Anzahl der Datensätze noch seh lange gehen würde.
Nun habe ich in PGAdmin gesehen, dass cih für die eine Tabelle das Autovacuum anpassen kann (stichwort Storage Parameter).
Wenn ich aber nun hier den Scale Factor etwas anpasse, wo wird dies in der DB gespeichert?
Kann man das von Hand per SQL irgenwie auslesen?
Es gibt aber 2 Reiter “Tabelle” und “Toast” welchen der beiden sollte ich anpassen(oder beide)?
Du hast vorhin gesagt, dass du “live” 6000 Tuples hast … wie kommst du jetzt auf “viel”? Und wieviel Einträge hat die Tabelle genau?
Du hast 8.4, oder? Dort sind diese Werte als Storage Parameter der Tabelle hinterlegt. Wenn du die Tabelle mit pg_dump sicherst, sollten die Einstellungen dort wieder auftauchen. Natürlich stehen diese Werte auch irgendwo in den Systemtabellen - wo genau, müsste ich jetzt nachschauen.
Die Tabelle hat runde 1Mio Datensätze.
Wenn ich nun den vacuum threshold ausrechne müssten runde 300.000 Datensätze geändert worden sein, damit der autovacuum durchlaufen würde.
Ja, ich habe 8.4.
Das ich per Dump/Restore die Einstellungen von autovacuum behalte ist klar.
Wo kann ich nachschauen, wo die Storage Parameter gespeichert werden?
Per Google.de habe ich leider nicht gefunden.
Es würde mich einfach so interessieren, wie ich das per SQL abfgragen kann… der PGAdmin kanns ja auch
test=*# create table c (i int);
CREATE TABLE
test=*# alter table c set (fillfactor=80);
ALTER TABLE
test=*# alter table c set (autovacuum_vacuum_scale_factor=2);
ALTER TABLE
test=*# select relname, reloptions from pg_class where relname='c';
relname | reloptions
---------+--------------------------------------------------
c | {fillfactor=80,autovacuum_vacuum_scale_factor=2}
(1 row)
Hinweis: das funktioniert ab 8.4 so. Bis 8.3 wurden diese Einstellungen in pg_autovacuum abgelegt.
Ab 8.5 kann das vielleicht schon wieder was anderes sein - ist zwar unwahrscheinlich, aber nicht unmöglich. Systemtabellen dürfen sich ändern, verlass dich also nicht blind da drauf.
Ab 8.5 kann das vielleicht schon wieder was anderes sein - ist zwar unwahrscheinlich, aber nicht unmöglich. Systemtabellen dürfen sich ändern, verlass dich also nicht blind da drauf.
Exakt. Ist übrigens auch ein Grund dafür, daß z.B. ältere Versionen von PGAdmin nicht vollständig mit neueren Versionen von PG zurecht kommen. Gilt auch für psql.