Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-de-allgemein by date

Next:From: Andreas 'ads' ScherbaumDate: 2011-07-15 11:05:03
Subject: Erinnerung: PostgreSQL@FrOSCon 2011 - Call for Papers
Previous:From: Thomas MarkusDate: 2011-07-15 05:30:53
Subject: Re: lang laufende Transaktionen

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group