Re: Re: FEHLER: konnte auf den Status von Transaktion XY nicht zugreifen

From: "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
To: "Susanne Ebrecht *EXTERN*" <susanne(at)2ndquadrant(dot)com>, <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: Re: FEHLER: konnte auf den Status von Transaktion XY nicht zugreifen
Date: 2012-02-21 09:04:40
Message-ID: D960CB61B694CF459DCFB4B0128514C20785C593@exadv11.host.magwien.gv.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Susanne Ebrecht wrote:
> > Darauf zielte meine Frage, die Du wahrscheinlich mißverstanden hast,
> > ab: Wenn es einen Crash gibt, wird ab dem letzten Checkpoint das WAL
> > nachgespielt. Was vor dem letzten Checkpoint war, muß auf Platte sein,
> > also auch CLOG, denn sonst könne man von so einer Transaktion nicht
> > mehr sagen, wie sie abgeschlossen wurde. Das WAL zu durchstöbern, wäre
> > nicht nur entsetzlich langwierig, sondern es ist auch gar nicht
> > garantiert, daß es das entsprechende WAL-Segment überhaupt noch gibt.
>
> Das stimmt so nicht. Wenn ein Crash passiert ist - wird beim Restart
> geprüft, wann der letzte Checkpoint war, alles was danach war wird aus
> den WAL bzw. Redo nachgezogen.
> WAL Dateien werden erst überschrieben, nachdem zwei Checkpoints passiert
> sind.
> Ja ich weiss, in der Doku steht, sie werden schon nach dem ersten
> überschrieben, aber tatsächlich
> werden sie erst nach dem zweiten Durchlauf überschrieben.
>
> Was vor dem letzten Checkpoint war - ist schon im Base angekommen. Das
> liegt schon fest auf der Platte. Das ist schon im Datenverzeichnis
> angekommen.
>
> PostgreSQL speichert erstmal alles permanent im WAL - wenn ein
> Checkpoint passiert wird dann alles auf die Platte i.d.r. ins base
> geschrieben.
>
> Die genaue Beschreibung, was pg_clog macht, findest Du hier:
>
> http://wiki.postgresql.org/wiki/Hint_Bits

Du weichst aus :^)

Mein Argument hängt gar nicht davon ab, ob WAL erst nach einem oder
erst nach 2 Checkpoints überschrieben wird.

Was vor dem letzten Checkpoint war, ist tatsächlich schon auf Platte -
aber eben genau deshalb, weil auch das CLOG dann auf Platte geschrieben
wird und nicht, wie Du ursprünglich behauptet hast, nur dann, wenn
es nicht mehr ins Memory paßt.

Und eigentlich ist es nicht notwendig, darüber zu streiten, weil ein
Blick in den Code das überflüssig macht.

Es geht mir nicht darum, Deinen Irrtum anzuprangern, aber die
ursprüngliche Frage, was in pg_clog eigentlich drinnensteht, sollte
meiner Meinung nach korrekt beantwortet werden.

Liebe Grüße,
Laurenz Albe

In response to

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Susanne Ebrecht 2012-02-21 12:32:46 Re: Re: FEHLER: konnte auf den Status von Transaktion XY nicht zugreifen
Previous Message Susanne Ebrecht 2012-02-20 19:21:53 Re: Re: FEHLER: konnte auf den Status von Transaktion XY nicht zugreifen