Transaktionsnummernueberlauf in der Logdatei

Hallo,

In meinem postgresql.log sehe ich recht häufig die Meldung:

Grenze fuer Transaktionsnummernueberlauf ist 1075676959, begrenzt durch Datenbank >>postgres<<

Wobei diese Meldung für jede Datenbank auftritt, habe nur “postgres” als Beispiel genommen.

Frage, was hat das bedeuten? Hat es etwas überhaupt etwas zu bedeuten?
Wenn ich die Dokumentation richtig verstanden habe, tritt ein Transaktionsnummernüberlauf nur 4 Millliarden Transaktionen auf.

Das kann hier jedoch nicht fer Fall sein, da in meinen Datenbanken zusammen keine 30.000 Objekte liegen und sie gerade mal eine Größe von 130MB aufweist.

Außerdem habe ich alle 30 Sekunden pg_autovaccum laufen, das genau daß verhindern sollte.

Könnte mir bitte jemand erklären, was es mit der Meldung auf sich hat? Benutze postgresql-8.1.3

Danke

Hallo,

diese Meldung ist erstmal eine reine Information und gibt die maximale Transaktionsnummer an. Ist dieser Wert erreicht wird die Transaktionnummer auf den Wert 0 zurückgesetzt.

Da jede Transaktion eine eindeutige Nummer erhält, wird der Wert ständig weitergezählt. Transaktionen sind auch nicht abhängig von der Größe einer Datenbank und auch nicht abhängig von der Anzahl der Datensätze einer Datenbank.

Zum besseren Verständniss solltest Du in der Doku die Kapitel über Transactionen nachlesen. Ein ganz wichtiges Kapitel ist auch “Chapter 22. Routine Database Maintenance Tasks” und das darin enthaltene Kapitel “22.1.3. Preventing transaction ID wraparound failures”. Auch wird in Kapitel 22 der Zusammenhang mit autovaccum erklärt.



mfg

fristo

Vielen Dank für die Antwort.
Das Kapitel über Wartungsarbeiten habe ich gelesen, deshalb hat mir diese Meldung ja Sorgen bereitet. Da autovaccum aktiviert ist, sollte es ja zu keinem wraparound kommen, wozu also die Meldung?
Da es aber sich aber um eine reine Info handelt, ergibt das wieder Sinn.
Danke nochmal

Hallo trauter,

autovaccum ist relativ neu!



mfg


fristo