Thread: Various Questions

Various Questions

From
Evil Azrael
Date:
Hi!


I have 4 question which probably someone can answer.

1) I have a transaction during which no data was modified, does it
make a difference whether i send COMMIT or ROLLBACK? The effect is the
same, but what´s about the speed?

2) Is there any general rule when the GEQO will start using an index?
Does he consider the number of tuples in the table or the number of
data pages? Or is it even more complex even if you don´t tweak the
cost setting for the GEQO?

3) Makes it sense to add a index to a table used for logging? I mean
the table can grow rather large due to many INSERTs, but is also
seldom queried. Does the index slowdown noticable INSERTs?

4) Temporary tables will always be rather slow as they can´t gain from
ANALYZE runs, correct?

Thanx in advance for any answer

Christoph Nelles

--
Mit freundlichen Grüssen
Evil Azrael                          mailto:evilazrael@evilazrael.de


Re: Various Questions

From
Shridhar Daithankar
Date:
On Monday 01 December 2003 18:37, Evil Azrael wrote:
> 1) I have a transaction during which no data was modified, does it
> make a difference whether i send COMMIT or ROLLBACK? The effect is the
> same, but what´s about the speed?

It should not matter. Both commit and rollback should take same amount of
time..

> 2) Is there any general rule when the GEQO will start using an index?
> Does he consider the number of tuples in the table or the number of
> data pages? Or is it even more complex even if you don´t tweak the
> cost setting for the GEQO?

I thought GEQO was triggered by numebr of join clauses. That is what GEQO cost
indicates.  It is not triggered by number of tuples in any table etc.

But correct me if I am wrong.

> 3) Makes it sense to add a index to a table used for logging? I mean
> the table can grow rather large due to many INSERTs, but is also
> seldom queried. Does the index slowdown noticable INSERTs?

Yes. It does make a lot of difference. If the table is very seldom queried,
you can probably create the index before querying and drop it later. However
even this will cost a seq. scan of table and can be heavy on performance..
 Take your pick

Shridhar


Re: Various Questions

From
Andrew Sullivan
Date:
On Mon, Dec 01, 2003 at 02:07:50PM +0100, Evil Azrael wrote:
> 1) I have a transaction during which no data was modified, does it
> make a difference whether i send COMMIT or ROLLBACK? The effect is the
> same, but what´s about the speed?

It makes no difference.

> 2) Is there any general rule when the GEQO will start using an index?
> Does he consider the number of tuples in the table or the number of
> data pages? Or is it even more complex even if you don´t tweak the
> cost setting for the GEQO?

GEQO is not what causes indexscans.  You're thinking of the
planner/optimiser.  Generally, the optimiser decides what the optimum
plan is to deliver a query.  This involves a complicated set of
rules.  The real important question is, "Am I really getting the
fastest plan?"  You can find out that with EXPLAIN ANALYSE.  If you
want to know more about what makes a good plan, I'd start by reading
the docs, and then by reading the comments in the source code.

> 3) Makes it sense to add a index to a table used for logging? I mean
> the table can grow rather large due to many INSERTs, but is also
> seldom queried. Does the index slowdown noticable INSERTs?

It does, but you might find that it's worth it.  If it is seldom
queried, but you really need the results and the result set is a
small % of the table, then you're probably wise to pay the cost of
the index at insert, update, and VACUUM because doing a seqscan on a
large table to get one or two rows will destroy all your buffers.

> 4) Temporary tables will always be rather slow as they can´t gain from
> ANALYZE runs, correct?

No, you can ANALYSE them yourself.  Of course, you'll need an index
unless you plan to read the whole table.  Note that, if you use temp
tables a lot, you need to be sure to vacuum at least pg_class and
pg_attribute more frequently than you might have thought.

A


--
----
Andrew Sullivan                         204-4141 Yonge Street
Afilias Canada                        Toronto, Ontario Canada
<andrew@libertyrms.info>                              M2P 2A8
                                         +1 416 646 3304 x110