| 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: | Whole Thread | Raw Message | 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 |