Re: Insert speed question - Mailing list pgsql-general

From Alvaro Herrera
Subject Re: Insert speed question
Date
Msg-id 20040602155834.GB9227@dcc.uchile.cl
Whole thread Raw
In response to Re: Insert speed question  (Josué Maldonado <josue@lamundial.hn>)
Responses Re: Insert speed question  (Josué Maldonado <josue@lamundial.hn>)
List pgsql-general
On Wed, Jun 02, 2004 at 08:50:16AM -0600, Josué Maldonado wrote:

> dbmund=# explain analyze
> dbmund-# insert into pk2
> dbmund-# (pkd_stamp,pkd_fecha,
> doctipo,'YYY',-1,-1,-1,-1,prod_no,impues,
> dbmund(# pkd_docto,pkd_es,pkd_qtysold,pkd_qtyinv,
                     ^^^^^^
> dbmund(# pkd_unidad,pkd_price,pkd_costo,pkd_saldo,
> dbmund(# pkd_procode,pkd_custid,pkd_vendedor,pkd_tipprice,
> dbmund(# pkd_totprice,pkd_estanulo,pkd_estmes,pkd_porcomision,
> dbmund(# pkd_rutafk,pkd_provcode,pkd_depto,pkd_pk,
> dbmund(# pkd_totcost,pkd_doctipo2,pkd_doctipo,fk_autorizacion,
> dbmund(# fk_devolucion,pkd_udindexfk,pkd_unidadfk,pkd_prodno,
> dbmund(# pkd_gravada,pkd_fraimp,pkd_imsove,pkd_clmayor,
> dbmund(# pkd_cajanum,pkd_es)
                       ^^^^^^
> dbmund-# select fkardex,facfec,facnum,es,tqtysold,
> dbmund-# invqty,unidad,fprice,fcost,saldo,
> dbmund-# substr(prod_no,8,4),codclie,who_sold,
> dbmund-# pre_tipo,fprice*tqtysold,'U',dtos(fkardex),
> dbmund-# por_comisi,'XXX',substr(prod_no,1,3),
> dbmund-# substr(prod_no,5,2),OID,fcost*tqtysold,
> dbmund-# doctipo,'YYY',-1,-1,-1,-1,prod_no,impues,
> dbmund-# fra_imp,imsove,clmayor,cajanum,es
> dbmund-# from hisventa
> dbmund-# ;
> ERROR:  column "pkd_es" specified more than once
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

So fix your query!  Also what do you expect to happen if you put
constants in the column list?  This certainly looks like a mistake to
me.  Anyway you should really format your query better so you can
understand it and see obvious mistakes.

> dbmund=# explain analyze
> dbmund-# insert into pk2
[...]
>                                                         QUERY PLAN
>
>
---------------------------------------------------------------------------------------------------------------------------
>  Seq Scan on hisventa  (cost=0.00..633607.24 rows=4882546 width=149)
> (actual time=26.647..363517.935 rows=4882546 loops=1)
>  Total runtime: 1042927.167 ms
> (2 rows)

So you are inserting 4 million rows.  This makes a lot of I/O so no
wonder it takes a long time.  I'm not sure if the time is reasonable or
not though; 4M rows/1M ms = 4 rows/ms.  Not that bad.


> >I would ask the question otherway round. What is the level of performance
> >you are looking at for your current workload. By how much this performance
> >is worse than your expectation?
>
> Since I have not tested the server with the production workload yet,
> maybe my perpception of performance is not rigth focused, basically my
> expectation is database must be faster than the current old legacy
> Foxpro system.

If you are going to have big load, you should at least try to code a
simulation with big load, doing random queries (not any query but the
actual queries you'll get from your system -- for example if this is a
web-based app you can try to use Siege or something along those lines).

--
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"No reniegues de lo que alguna vez creíste"


pgsql-general by date:

Previous
From: Thomas Schoen
Date:
Subject: Re: ORDER BY with plpgsql parameter
Next
From: "BARTKO Zoltan"
Date:
Subject: Re: Securing a db app - RFC