Table Partitions: To Inherit Or Not To Inherit

From: Don Drake <dondrake(at)gmail(dot)com>
To: pgsql-performance(at)postgresql(dot)org
Subject: Table Partitions: To Inherit Or Not To Inherit
Date: 2004-11-17 05:31:15
Message-ID: 6c21003b041116213166af022d@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

I've read the previous thread on the list regarding partitioning
mechanisms and I just wrote a plpgsql function to create the partition
tables (by date) as well as another function used to do the insert (it
determines which table will be inserted).

The creation of the partition tables uses the inherits clause when
creating. It creates an exact copy of the table it's inheriting from,
and adds the indexes since inherits doesn't do that for me.

CREATE TABLE hourly_report_data_2004_11_16 () INHERITS (hourly_report_data)

When I query on the hourly_report_data, the explain plan shows it
query all the tables that inherited from it. That's all great.

What's really the difference between this and creating separate tables
with the same column definition without the inherit, and then create a
view to "merge" them together?

Also, I've run into a snag in that I have a hourly_detail table, that
has a foreign key to the hourly_report_data. The inherit method above
does not honor the foreign key relationship to the children table of
hourly_report_data. I can't insert any data into the hourly_detail
table due to the constraint failing.

The hourly_detail table is relatively tiny compared to the enormous
hourly_report_data table, so if I don't have to partition that one I
would rather not. Any suggestions on this?

Thanks.

-Don

--
Donald Drake
President
Drake Consulting
http://www.drakeconsult.com/
312-560-1574

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Josh Berkus 2004-11-17 05:47:54 Re: memcached and PostgreSQL
Previous Message Russell Smith 2004-11-17 04:35:42 Re: query plan question