Обсуждение: Help on my database performance

Поиск
Список
Период
Сортировка

Help on my database performance

От
"Jianshuo Niu"
Дата:
Hi! There:

I ran the same explain analyze on two similar tables. However, the table
with less data took much more time than the one with more data. Could anyone
tell me what happened?
Here is the explain analyze:
explain analyze select productid from tfd_catalog;
NOTICE:  QUERY PLAN:

Seq Scan on tfd_catalog  (cost=0.00..43769.82 rows=161282 width=10) (actual
time
=3928.64..12905.76 rows=161282 loops=1)
Total runtime: 13240.21 msec


explain analyze select productid from hm_catalog;
NOTICE:  QUERY PLAN:

Seq Scan on hm_catalog  (cost=0.00..22181.18 rows=277518 width=9) (actual
time=2
1.32..6420.76 rows=277518 loops=1)
Total runtime: 6772.95 msec

Thank you for your help

Josh



Re: Help on my database performance

От
Manfred Koizar
Дата:
On Thu, 31 Jul 2003 11:06:09 -0400, "Jianshuo Niu" <jniu@wc-group.com>
wrote:
>I ran the same explain analyze on two similar tables. However, the table
>with less data took much more time than the one with more data. Could anyone
>tell me what happened?

>Seq Scan on tfd_catalog  (cost=0.00..43769.82 rows=161282 width=10) (actual
>time=3928.64..12905.76 rows=161282 loops=1)
>Total runtime: 13240.21 msec
>
>Seq Scan on hm_catalog  (cost=0.00..22181.18 rows=277518 width=9) (actual
>time=21.32..6420.76 rows=277518 loops=1)
>Total runtime: 6772.95 msec

The first SELECT takes almost twice the time because tfd_catalog has
almost twice as many pages than hm_catalog.  This may be due to having
wider tuples or more dead tuples in tfd_catalog.

In the former case theres not much you can do.

But the high startup cost of the first SELECT is a hint for lots of
dead tuples.  So VACUUM FULL ANALYSE might help.

Servus
 Manfred

Re: Help on my database performance

От
"Jianshuo Niu"
Дата:
Dear Manfred:

Thank you so much for your response. vacuum full anaylze works!
explain analyze select count(*) from tfd_catalog ;
NOTICE:  QUERY PLAN:

explain analyze select count(*) from tfd_catalog ;
NOTICE:  QUERY PLAN:

Aggregate  (cost=15986.02..15986.02 rows=1 width=0) (actual
time=1089.99..1089.9
9 rows=1 loops=1)
  ->  Seq Scan on tfd_catalog  (cost=0.00..15582.82 rows=161282 width=0)
(actual
 time=0.11..833.41 rows=161282 loops=1)
Total runtime: 1090.51 msec

EXPLAIN  ->  Seq Scan on tfd_catalog  (cost=0.00..15582.82 rows=161282
width=0) (actual
 time=0.11..833.41 rows=161282 loops=1)
Total runtime: 1090.51 msec

Could you tell me what does  "Aggregate  (cost=15986.02..15986.02 rows=1
width=0) (actual time=1089.99..1089.99 rows=1 loops=1)" mean? It does not
show in my previous report.

I appreicate it.


Josh



Re: Help on my database performance

От
Manfred Koizar
Дата:
On Thu, 31 Jul 2003 16:08:11 -0400, "Jianshuo Niu" <jniu@wc-group.com>
wrote:
>explain analyze select count(*) from tfd_catalog ;
>NOTICE:  QUERY PLAN:
>
>Aggregate  (cost=15986.02..15986.02 rows=1 width=0)
>           (actual time=1089.99..1089.99 rows=1 loops=1)
>  ->  Seq Scan on tfd_catalog  (cost=0.00..15582.82 rows=161282 width=0)
>                               (actual time=0.11..833.41 rows=161282 loops=1)
>Total runtime: 1090.51 msec

>Could you tell me what does  "Aggregate  (cost=15986.02..15986.02 rows=1
>width=0) (actual time=1089.99..1089.99 rows=1 loops=1)" mean? It does not
>show in my previous report.

In your first post you did
    SELECT productid FROM tfd_catalog;

now you did
    SELECT count(*) FROM tfd_catalog;

count() is an aggregate function which in your case takes 161282 rows
as input and produces a single row as output.  The "actual" part of
the "Aggregate" line tells you that the first resulting row is
generated 1089.99 milliseconds after query start and the last row (not
surprisingly) at the same time.  The "cost" part contains the
planner's estimations for these values.

Servus
 Manfred