Re: Tuning queries on large database - Mailing list pgsql-performance

From Christopher Kings-Lynne
Subject Re: Tuning queries on large database
Date
Msg-id 20040804211849.L3435-100000@houston.familyhealth.com.au
Whole thread Raw
In response to Tuning queries on large database  (Valerie Schneider DSI/DEV <Valerie.Schneider@meteo.fr>)
List pgsql-performance
>     sort_mem = 50000

That is way, way too large.  Try more like 5000 or lower.

>  num_poste  | numeric(9,0)                | not null

For starters numerics are really, really slow compared to integers.  Why
aren't you using an integer for this field since youhave '0' decimal
places.

>  schema | relfilenode |      table       |   index    |  reltuples  |   size
> --------+-------------+------------------+------------+-------------+----------
>  public |   125615917 | data             |            | 1.25113e+08 | 72312040
>  public |   251139049 | data             | i_data_dat | 1.25113e+08 |  2744400
>  public |   250870177 | data             | pk_data    | 1.25113e+08 |  4395480
>
> My first remark is that the table takes a lot of place on disk, about
> 70 Gb, instead of 35 Gb with oracle.

Integers will take a lot less space than numerics.

> The different queries of the bench are "simple" queries (no join,
> sub-query, ...) and are using indexes (I "explained" each one to
> be sure) :
> Q1 select_court : access to about 700 rows  : 1 "num_poste" and 1 month
>     (using PK : num_poste=p1  and dat between p2 and p3)
> Q2 select_moy   : access to about 7000 rows : 10 "num_poste" and 1 month
>     (using PK : num_poste between p1 and p1+10 and dat between p2 and p3)
> Q3 select_long  : about 250 000 rows        : 2 "num_poste"
>     (using PK : num_poste in (p1,p1+2))
> Q4 select_tres_long : about 3 millions rows : 25 "num_poste"
>     (using PK : num_poste between p1 and p1 + 25)
>
> The result is that for "short queries" (Q1 and Q2) it runs in a few
> seconds on both Oracle and PG. The difference becomes important with
> Q3 : 8 seconds with oracle
>      80 sec with PG
> and too much with Q4 : 28s with oracle
>                        17m20s with PG !
>
> Of course when I run 100 or 1000 parallel queries such as Q3 or Q4,
> it becomes a disaster !

Please reply with the EXPLAIN ANALYZE output of these queries so we can
have some idea of how to help you.

Chris



pgsql-performance by date:

Previous
From: Michal Taborsky
Date:
Subject: Re: The black art of postgresql.conf tweaking
Next
From: Rod Taylor
Date:
Subject: Re: Tuning queries on large database