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

Поиск
Список
Период
Сортировка
От Jasen Betts
Тема Re: [Q] optmizing postgres for 'single client' / many small queries
Дата
Msg-id h82rc8$dc9$1@reversiblemaps.ath.cx
обсуждение исходный текст
Ответ на [Q] optmizing postgres for 'single client' / many small queries  ("V S P" <toreason@fastmail.fm>)
Список pgsql-general
On 2009-09-02, V S P <toreason@fastmail.fm> 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.


В списке pgsql-general по дате отправления:

Предыдущее
От: Jasen Betts
Дата:
Сообщение: Re: Query and the number of row result
Следующее
От: John DeSoi
Дата:
Сообщение: Re: edit function