Looking into syncscan.c, it says in comments:

"When multiple backends run a sequential scan on the same table, we try to
keep them synchronized to reduce the overall I/O needed."

But in my workload, every process was running on a different table.




On Tue, Dec 3, 2013 at 5:56 PM, Claudio Freire <klaussfre...@gmail.com>wrote:

> On Tue, Dec 3, 2013 at 10:49 AM, Metin Doslu <me...@citusdata.com> wrote:
> > We have several independent tables on a multi-core machine serving Select
> > queries. These tables fit into memory; and each Select queries goes over
> one
> > table's pages sequentially. In this experiment, there are no indexes or
> > table joins.
> >
> > When we send concurrent Select queries to these tables, query performance
> > doesn't scale out with the number of CPU cores. We find that complex
> Select
> > queries scale out better than simpler ones. We also find that increasing
> the
> > block size from 8 KB to 32 KB, or increasing shared_buffers to include
> the
> > working set mitigates the problem to some extent.
> >
> > For our experiments, we chose an 8-core machine with 68 GB of memory from
> > Amazon's EC2 service. We installed PostgreSQL 9.3.1 on the instance, and
> set
> > shared_buffers to 4 GB.
>
>
> If you are certain your tables fit in RAM, you may want to disable
> synchronized sequential scans, as they will create contention between
> the threads.
>

Reply via email to