From: | Susanne Ebrecht <susanne(at)2ndquadrant(dot)com> |
---|---|
To: | Albe Laurenz <laurenz(dot)albe(at)wien(dot)gv(dot)at> |
Cc: | pgsql-de-allgemein(at)postgresql(dot)org |
Subject: | Re: Re: FEHLER: konnte auf den Status von Transaktion XY nicht zugreifen |
Date: | 2012-02-20 10:59:42 |
Message-ID: | 4F42279E.5030405@2ndquadrant.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
Am 20.02.2012 10:46, schrieb Albe Laurenz:
> Susanne Ebrecht schrieb:
>> Am 14.02.2012 10:53, schrieb Andreas Tille:
>>> Was sind das für Dateien ig pg_clog und warum können die verschwinden?
>>> Viele Grüße Andreas.
>> pg_clog ist in der Regel leer. Da werden nur dann Commit-Logs
>> ausgelagert, wenn der RAM nicht reicht.
> Wenn das war wäre, und es gäbe einen Crash, wie würde das System
> dann den Commit-Status von Transaktionen herausfinden, die vor dem
> letzten Checkpoint passiert sind?
Lass es mich mal von vorne erkläre:
Von prepared Transactions abgesehen ist, arbeitet SQL nach dem
Ein-Phasen-Commit-Prinzip. Heisst Du schickt "Commit" und bekommst "ACK"
zurück,
wenn es geklappt hat.
Du startest eine Transaktion -
Zwischenschritte und so weiter werden im RAM festgehalten und wenn RAM
nicht reicht,
in pg_clog bzw. pg_subtrans ausgelagert. Subtransaktionen werden - je
nach Art der Subtransaktion
entweder in pg_clog oder in pg_subtrans ausgelagert. Das kommt auf die
Subtransaktion an.
Wenn Du das Commit abfeuerst - dann wird alles permanent in pg_xlog
gespeichert.
Erst wenn alles permanent (auf der Festplatte) in pg_xlog abgelegt
wurde, bekommst Du
das "ACK" zurück. Im psql z.B. bekommst Du dann den Prompt wieder.
Erst dann gilt es als committed.
Vorausgesetzt natürlich, dass Du synchronous_commit nicht abgeschaltet hast.
Wenn Dir der Server abraucht, bevor oder während des Commits - dann ist
die Transaktion
verloren. Dann hast Du aber auch keine Bestätigung bekommen, dass die
Transaktion abgeschlossen
wurde.
Susanne
--
Dipl. Inf. Susanne Ebrecht - 2ndQuadrant
PostgreSQL Development, 24x7 Support, Training and Services
www.2ndQuadrant.com
From | Date | Subject | |
---|---|---|---|
Next Message | Nicolas Barbier | 2012-02-20 12:24:30 | Re: Re: FEHLER: konnte auf den Status von Transaktion XY nicht zugreifen |
Previous Message | Thomas Markus | 2012-02-20 10:20:59 | Re: Re: FEHLER: konnte auf den Status von Transaktion XY nicht zugreifen |