Re: lang laufende Transaktionen

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

In response to

Browse pgsql-de-allgemein by date

  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