I was looking at the support that PostgreSQL offers for table partitioning at http://www.postgresql.org/docs/8.4/static/ddl-partitioning.html. The concept looks promising, but its maybe fair to say that PG itself doesn't really supports partitioning natively, but one can simulate it using some of the existing PG features (namely inheritance, triggers, rules and constraint exclusion). This simulating does seem to work, but there are some disadvantages and caveats.
A major disadvantage is obviously that you need to set up and maintain the whole structure yourself (which is somewhat dangerous, or at least involves a lot of maintenance overhead). Next to that, it seemingly becomes hard to do simple queries likes 'select * from foo where bar> 1000 and bar < 5000', in case the answer to this query spans multiple partitions. constraint exclusion works to some degree, but the document I referred to above tells me I can no longer use prepared statements then.
I wonder if there are any plans to incorporate 'native' or 'transparent' partitioning in some future version of PG? With this I mean that I would basically be able to say something like (pseudo): "alter table foo partition on bar range 100", and PG would then simply start doing internally what we now have to do manually.
Is something like this on the radar or is it just wishful thinking of me?
What can you do with the new Windows Live? Find out
pgsql-performance by date
|Next:||From: James Nelson||Date: 2009-05-01 14:55:26|
|Subject: Re: bad plan and LIMIT|
|Previous:||From: Gerhard Wiesinger||Date: 2009-05-01 13:55:49|
|Subject: Many left outer joins with limit performance|