Re: Are bitmap index scans slow to start?

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

 



On Tue, Feb 26, 2013 at 4:33 PM, Carlo Stonebanks <stonec.register@xxxxxxxxxxxx> wrote:

<<Is each of these write operations just covering a single row?  Does this description apply to just one of the many (how many?) databases, so that there are really 14*N concurrent sessions?

>> 

 

All writes are single row. All DB’s have exactly the same structure, only the content is different. Currently the server is hosting five active DB’s – although there 14 DB’s actually on the host, the balance are backups and or testing environments.


I had thought you were saying that any one ETL procedure into one database used 14 concurrent threads.  But really, each ETL procedure is single-threaded, and there can be up to 5 (or theoretically up to 14) of them running at a time into different databases?
 
 

When a feed comes in, it can be anything from dozens to millions of rows, and may take minutes or days to run. I had asked that PG bouncer be installed in front of the host to act as a traffic cop. Try as I may to convince the engineering team that fewer sessions running faster is optimal, they say that the 14 concurrent sessions is based on real-world experience of what imports the fastest.



pgbouncer is more for making connections line up single-file when the line is moving at a very fast clip, say 0.01 second per turn.  If I were trying to make tasks that can each last for hours or days line up and take turns, I don't think pgbouncer would be the way to go.

 

 

<< You really need to know whether those reads and writes are concentrated in a small region (relative to the amount of your RAM), or widely scattered.  If you are reading and writing intensively (which you do seem to be doing) but only within a compact region, then it should not drive other data out of the cache.  But, since you do seem to have IO problems from cache misses, and you do have a high level of activity, the easy conclusion is that you have too little RAM to hold the working size of your data.
>>

 

It won’t be a problem of physical RAM, I believe there is at least 32GB of RAM. What constitutes “a compact region”?


If you have 14 actively going on simultaneously, I'd say a compact region would then be about 512 MB. 
(32GB/ 14 / margin of safety of 4).  Again, assuming that that is the problem.
 

The ETL process takes the feed and distributes it to 85 core tables.  I have been through many PG configuration cycles with the generous help of people in this forum. I think the big problem when getting help has been this issue of those offering assistance understanding that the whopping majority of the time, the system is performing single row reads and writes. The assumption tends to be that the end point of an ETL should just be a series of COPY statements, and it should all happen very quickly in classic SQL bulk queries.


That is often a reasonable assumption, as ETL does end with L :)

Is the original query you posted part of the transform process, rather than being the production query you run after the ETL is over?

If so, maybe you need a EL(S)TL process, were you first load the data to staging table in bulk, and then transform it in bulk rather than one row at a time.

Cheers,

Jeff

[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux