Re: Table partitioning

From: Herouth Maoz <herouth(at)unicell(dot)co(dot)il>
To: Elliot <yields(dot)falsehood(at)gmail(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Table partitioning
Date: 2013-10-28 16:47:35
Message-ID: 56E7B7A9-34F1-4477-A8E6-21D11376E4B0@unicell.co.il
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Thanks. Assuming there is an index on the time_arrived column, and that there are about 10.5 million records in each child table, how bad will performance be if the query actually accesses all the 12 tables? Will it be as bad as using the full table?

On 28/10/2013, at 18:31, Elliot wrote:

> On 2013-10-28 12:27, Herouth Maoz wrote:
>> I have a rather large and slow table in Postgresql 9.1. I'm thinking of partitioning it by months, but I don't like the idea of creating and dropping tables all the time.
>>
>> I'm thinking of simply creating 12 child tables, in which the check condition will be, for example, date_part('month'', time_arrived) = 1 (or 2 for February, 3 for March etc.).
>>
>> I'll just be deleting records rather than dropping tables, the same way I do in my current setup. I delete a week's worth every time.
>>
>> So, I have two questions.
>>
>> First, is constraint exclusion going to work with that kind of condition? I mean, if my WHERE clause says something like "time_arrived >= '2013-04-05' and time_arrived < '2013-04-17'", will it be able to tell that date_part("month",time_arrived) for all the records is 4, and therefore avoid selecting from any partitions other than the april one?
>>
>> Second, when I delete (not drop!) from the mother table, are records deleted automatically from the child tables or do I need to create rules/triggers for that?
>>
>>
>> TIA,
>> Herouth
>>
> 1. No - you'd need a condition like "where date_part("month", time_arrived) = 1" in your select statements in order for the constraint exclusion to kick in
> 2. Yes - there is no need to create rules or triggers for deletes on the parent table (check out the syntax for "delete from <table>" versus "delete from only <table>)
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Elliot 2013-10-28 17:04:01 Re: Table partitioning
Previous Message Elliot 2013-10-28 16:31:57 Re: Table partitioning