Speed up repetitive queries

From: "Javier Olazaguirre" <javier(dot)olazaguirre(at)nexustelecom(dot)com>
To: <pgsql-general(at)postgresql(dot)org>
Subject: Speed up repetitive queries
Date: 2008-05-02 15:13:59
Message-ID: 9556CBAA8C0342489A5161CD96E17895DEA711@EROS.nexus-ag.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

> I have an application developped by a third party which takes very
> long to process all the queries.
>
> I use Red Hat 4 and Postgre 8.2.7 on a 64 bit machine.
>
> Checking the log files created by postgre I see that the program is
> running always the same query:
>
> execute <unnamed>: select connection0_.id as id35_5_,
> connection0_.pc_name as pc2_35_5_, connection0_.gw_name as gw3_35_5_,
> connection0_.active as active35_5_, connection0_.pc as pc35_5_,
> connection0_.gw as gw35_5_, connection0_.carrier as carrier35_5_,
> connection0_.cic as cic35_5_, pointcode1_.id as id45_0_,
> pointcode1_.value as value45_0_, pointcode1_.ni as ni45_0_,
> pointcode1_.active as active45_0_, gateway2_.id as id41_1_,
> gateway2_.value as value41_1_, gateway2_.ni as ni41_1_,
> gateway2_.active as active41_1_, carrier3_.id as id33_2_,
> carrier3_.name as name33_2_, carrier3_.active as active33_2_, cic4_.id
> as id34_3_, cic4_.low as low34_3_, cic4_.high as high34_3_,
> cic4_.active as active34_3_, cic4_.producttype as productt5_34_3_,
> producttyp5_.id as id46_4_, producttyp5_.name as name46_4_,
> producttyp5_.active as active46_4_ from connection connection0_ left
> outer join pointcode pointcode1_ on connection0_.pc=pointcode1_.id
> left outer join gateway gateway2_ on connection0_.gw=gateway2_.id left
> outer join carrier carrier3_ on connection0_.carrier=carrier3_.id left
> outer join cic cic4_ on connection0_.cic=cic4.id left outer join
> producttype producttyp5_ on cic4_.producttype=producttyp5_.id where
> connection0_.id=$1
>
>
> parameters: $1 = '141508'
>
> The only thing that changes is the parameter at the end ($1).
> This query is executed at least a million times (sometimes several
> million times) just changing the value of the $1 parameter. Each query
> takes between 1 and 2 milliseconds to execute in my system. So running
> a million queries takes quite a lot of minutes.
>
> Is there any way to speed up the execution of this query?
>
> I cannot change the code of the application, I already got it
> compiled, so as far as I can think of, all I can do is tune the
> system, change parameters in postgre, etc.
> I already tried changing shared buffers and other parameters in
> postgresql.conf, but performance is still the same.
> When I run a Explain statement with the select I see indices are being
> used by all subqueries.
> I see my cpu is at 100%, so I believe my bottleneck is not IO or
> memory (8GB, and in "top" I see almost all of it is free). My problem
> is that of all the cores of my processors, postgre is just using one,
> but I guess this can only be fixed changing the code of the
> application running the queries on postgre, so this is a different
> story.
>
> Thanx!!
> Javier

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Glyn Astill 2008-05-02 15:14:24 Re: Autovacuum
Previous Message Scott Ribe 2008-05-02 15:08:41 Re: clustering without locking