From: | "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at> |
---|---|
To: | "Andreas Kretschmer *EXTERN*" <akretschmer(at)spamfence(dot)net>, <pgsql-de-allgemein(at)postgresql(dot)org> |
Subject: | Re: lang laufende Transaktionen |
Date: | 2011-07-15 07:51:42 |
Message-ID: | D960CB61B694CF459DCFB4B0128514C206AB9672@exadv11.host.magwien.gv.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
> wie kann man einem Kunden erklären, daß es keine sonderlich gute Idee
> ist, Transaktionen über Wochen oder gar Monate laufen zu lassen und da
> massiv (zumindest dutzende pro Sekunde) Updates zu machen? ...
Die richtige Frage wäre: Wieso will der Kunde das?
Was ist sein eigentliches Problem, das er hofft, mit dieser Schnapsidee
in den Griff kriegen zu können?
Die offensichtlichen technischen Probleme (VACUUM kann nicht laufen,
bei Client- oder Netzwerkproblemen ist alles weg) wurden schon erwähnt.
Offensichtlich kann auf die betreffenden Daten niemand außer die
Dauertransaktion schreibend zugreifen, also muß es sich um ein
"einer (und immer der gleiche) schreibt, viele lesen"-Szenario handeln.
Und offenbar dauert es Wochen, bis die geschriebenen Daten (wieder)
konsistent sind.
Wenn das wirklich so ist (und ein anderes Szenario kann ich mir nicht
vorstellen), warum nicht so:
Am Anfang des wochenlangen Update-Prozesses:
CREATE TABLE data_copy AS (SELECT * FROM data);
-- notwendige Indizes und Constraints anlegen
oder
CREATE TABLE data_copy (LIKE data INCLUDING ALL);
INSERT INTO data_copy SELECT * FROM data;
Dann soll der Schreiber von mir aus monatelang auf der Tabelle herumfummeln.
Wenn er fertig ist:
START TRANSACTION;
DROP TABLE data;
ALTER TABLE data_copy RENAME TO data;
COMMIT;
Voilà. Dasselbe erreicht, ohne lange Transaktion.
Man muß vielleicht noch ein bißchen Kopfarbeit hineinstecken (z.B. müßten
auch Fremdschlüssel, die auf "data" zeigen, beachtet werden), aber so sollte
es im Wesentlichen gehen.
Liebe Grüße,
Laurenz
From | Date | Subject | |
---|---|---|---|
Next Message | Andreas 'ads' Scherbaum | 2011-07-15 11:05:03 | Erinnerung: PostgreSQL@FrOSCon 2011 - Call for Papers |
Previous Message | Thomas Markus | 2011-07-15 05:30:53 | Re: lang laufende Transaktionen |