Skip site navigation (1) Skip section navigation (2)

Re: Performance on large, append-only tables

From: Claudio Freire <klaussfreire(at)gmail(dot)com>
To: David Yeu <david(dot)yeu(at)skype(dot)net>
Cc: "pgsql-performance(at)postgresql(dot)org" <pgsql-performance(at)postgresql(dot)org>, "ops(at)groupme(dot)com" <ops(at)groupme(dot)com>
Subject: Re: Performance on large, append-only tables
Date: 2012-02-10 15:33:33
Message-ID: CAGTBQpY8ySbL0=b0GG75tsR-8dLaXFq-V3k5=WujXPDoorYJbg@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-performance
On Wed, Feb 8, 2012 at 3:03 PM, David Yeu <david(dot)yeu(at)skype(dot)net> wrote:
> Thankfully, the types of queries that we perform against this table are
> pretty constrained. We never update rows and we never join against other
> tables. The table essentially looks like this:
>
> | id | group_id | created_at | everything elseŠ
...
> Our queries essentially fall into the following cases:
>
>  * Š WHERE group_id = ? ORDER BY created_at DESC LIMIT 20;
>  * Š WHERE group_id = ? AND id > ? ORDER BY created_at DESC;
>  * Š WHERE group_id = ? AND id < ? ORDER BY created_at DESC LIMIT 20;
>  * Š WHERE group_id = ? ORDER BY created_at DESC LIMIT 20 OFFSET ?;

I think you have something to gain from partitioning.
You could partition on group_id, which is akin to sharding only on a
single server, and that would significantly decrease each partition's
index size. Since those queries' performance is highly dependent on
index size, and since you seem to have such a huge table, I would
imagine such partitioning would help keep the indices performant.

Now, we do need statistics. How many groups are there? Do they grow
with your table, or is the number of groups constant? Which values of
offsets do you use? (offset is quite expensive)

And of course... explain analyze.

In response to

pgsql-performance by date

Next:From: Marti RaudseppDate: 2012-02-10 15:34:39
Subject: Re: Performance on large, append-only tables
Previous:From: Merlin MoncureDate: 2012-02-10 15:19:10
Subject: Re: Performance on large, append-only tables

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group