Re: writable view performance #1

From: Andreas Kretschmer <akretschmer(at)spamfence(dot)net>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: writable view performance #1
Date: 2006-12-25 17:18:53
Message-ID: 20061225171853.GA4673@KanotixBox
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Enrico Weigelt <weigelt(at)metux(dot)de> schrieb:
> > > * die Table base.platform wird eingebaut (join), auch wenn die daraus
> > > entstammenden Felder nicht benutzt werden. Kann das denn nicht
> > > wegoptimiert werden ?
> >
> > Wenn diese Table mit eingebaut wird, dann wird das wohl nötig sein.
> > Offensichtlich wird diese irgendwo in Deinen Views mit referenziert.
>
> Im View an sich ja, aber nicht in der konkreten Query.

Ist in der konkreten Query der View mit drin?

> > > * ich hab auf das seen-Flag (auch in Verbindung mit allerlei anderen
> > > hier benutzten Feldern) Indices gesetzt - keiner wird verwendet.
> >
> > BOOL-Felder und Indexe, naja, solche Felder haben keine hohe
> > Selektivität. Näheres würde ein explain analyse verraten.
>
> Das bringt wohl nicht viele Punkte ?

Depends. Wenn die überwiegende Mehrheit der Datensätze die
WHERE-Bedingung erfüllt, dann wohl nicht.

> > - Tabellen, die vielen Änderungen (Updates/Deletes) unterliegen
> > benötigen öfters mal ein Vacuum
>
> Wie oft ? Gibts da eine Richtschnur ?

Ein simples VACUUM unmittelbar nach gröberen Änderungen schadet selten.

>
> BTW: werden eigentlich überflüssige updates (also bei denen
> praktisch dieselben Werte wieder geschrieben werden) von postgres
> selbst abgefangen oder gibts da jedesmal echte Schreiboperationen ?

Kann ich grad nicht sagen, müßte man mal ausprobieren. Vermutlich aber
ja. Aber Versuch macht klug:

test=# \d words
Table "public.words"
Column | Type | Modifiers
--------+------+-----------
w | text |
Indexes:
"idx_words" btree (lower(w) varchar_pattern_ops)

test=#
test=# select count(*) from words;
count
-------
56840
(1 row)

test=# select pg_relation_size('words');
pg_relation_size
------------------
2621440
(1 row)

test=# update words set w=w;
UPDATE 56840
test=# select pg_relation_size('words');
pg_relation_size
------------------
5234688
(1 row)

Andreas
--
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect. (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly." (unknow)
Kaufbach, Saxony, Germany, Europe. N 51.05082°, E 13.56889°

In response to

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Andreas 'ads' Scherbaum 2006-12-27 01:23:29 == Wöchentlicher PostgreSQL Newsletter - 25. Dezember 2006 ==
Previous Message Enrico Weigelt 2006-12-25 02:59:02 Re: writable view performance #1