Re: Haeufige Updates in Tabelle mit vielen/breiten Spalten

From: Andreas Seltenreich <andreas+pg(at)gate450(dot)dyndns(dot)org>
To: Alvar Freude <alvar(at)a-blast(dot)org>
Cc: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Haeufige Updates in Tabelle mit vielen/breiten Spalten
Date: 2006-02-27 05:51:23
Message-ID: 87hd6lfixw.fsf@gate450.dyndns.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Alvar Freude writes:

> Wenn Postgres ein Update auf eine Spalte macht, wird aufgrund der
> Transaktionen immer eine komplette Kopie der Spalte angelegt. (wenn ich
> mich nun nicht irre)

s/Spalte/Zeile/, da MVCC ja Zeilenweise agiert.

> Angenommen, ich habe eine Tabelle mit relativ vielen Spalten, einigen
> Texten usw. und eine Spalte davon wird relativ häufig aktualisiert, zum
> Beispiel ein Counter.

Wenn die Text-Felder groß genug sind (> 2kB IIRC), wird darin nur ein
Zeiger auf die passende Toast-Tabelle abgelegt. MVCC-Kopien werden in
dem Fall dann nur von den verbleibenden Zeigern gemacht, und nicht von
Inhalt der Toast-Tabellen.

> Hat jemand Erfahrungswerte, ob bzw. ab wann es sinnvoll ist, diese Spalte
> (oder mehrere häufig zu aktualisierende Spalten) in eine andere Tabelle
> zu verfrachten, damit beim Update nicht immer von allen Spalten (und
> Texten) Kopien angelegt werden müssen und große Lücken entstehen? Oder
> ist das eher Quatsch?

Also ich hatte durchaus schon Fälle, in denen man gerade so unter der
Toast-Grenze lag, und dadurch in rasantem Tempo tote Seiten produziert
wurden. Hier lohnte es sich dann, "manuell zu toasten".

Ich könnte mir auch vorstellen, daß man in macnhen Fällen auch via
"alter table set storage" feineinstellen kann, welche der Felder im
Zweifelsfall getoastet werden.

> Beim Auslesen muss ja auch ein Join gemacht werden und außerdem ist
> dann zwei mal der Overhead für die Spalten-Basisdaten nötig.

Sollte einklich unproblematisch sein, da genau das impliziert wird,
wenn Postgres sich für's toasten entscheidet.

Gruß
Andreas
--

In response to

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Alvar Freude 2006-02-27 18:59:29 Re: Haeufige Updates in Tabelle mit vielen/breiten Spalten
Previous Message Alvar Freude 2006-02-26 23:01:30 Haeufige Updates in Tabelle mit vielen/breiten Spalten