Search Postgresql Archives

Re: [Q] optmizing postgres for 'single client' / many small queries

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2009-09-02, V S P <toreason@xxxxxxxxxxx> wrote:
> Hi,
> our application is using Postgres in a rather unusuall way.
> It is used by a GUI application to store several hundred
> thousand 'parameters'.  Basically it is used like a big INI
> file.
>
> There are about 50 tables with various parameters.
>
> The application typicall goes like this
>
> select id, child_tb_key_id, <fields with parms> from tb1
>
> then for each selected row above
>      select from the child table do a select (like the above)
>
> and so on -- many levels deep
>
> I know that it is not a proper way to use SQL
> Instead we should be selecting many rows at once, joining them/etc
>
> But it is  what it is now...

rewriting it as a single query will speed up operation.

> Queries are very fast though, Postgres reports that the
> all the queries for a typical 'load' operation take 0.8 seconds
> -- however overall time that the GUI user perceives is 8 seconds.
> Out of that 8 seconds a big chunk is in the sending of the SQL
> statements/receiving results back -- just network traffic, parsing/etc

0.8s processing 7.2s latency 

> There are total about 2400 queries that happen in that period of time
> (just selects)

> I am trying to figure out how can I optimize PG configuration
> to suite such a contrived deployment of Postgres.

> For example, we do not mind PG running on the same machine
> as the Client app (it is connected via Qt Sql Pg plugin (so it uses
> Pg native access library underneath).
>
> Are there any optmization can be done for that?

try using libpq directly. 

> Also this is a 'single' client/single connection system
> what optimizations can be done for that?

asynchronous queries if you can know what to ask second before the answer to
the first query

> and finally since most of the queries are very quick index-based
> selects what can be done to optimize the traffic between pg and
> the client?

unix domain sockets 

> thank you in advance for
> any recommendations/pointers.

but serously bite the bullet and redo it a a single query that returns
2400 rows instead of 2400 queries that return one row.

or slurp all the tables into dictionaries (hash tables/arrays/whatever) in your 
QT application. and write your queries in C++ instead of SQL.


-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux