Re: What needs to be done for real Partitioning? - Mailing list pgsql-performance

From Tom Lane
Subject Re: What needs to be done for real Partitioning?
Date
Msg-id 3375.1111276999@sss.pgh.pa.us
Whole thread Raw
In response to Re: What needs to be done for real Partitioning?  (Josh Berkus <josh@agliodbs.com>)
Responses Re: What needs to be done for real Partitioning?
Re: What needs to be done for real Partitioning?
List pgsql-performance
Josh Berkus <josh@agliodbs.com> writes:
>>> -- INSERT INTO should automatically create new partitions where necessary
>>> -- DELETE FROM should automatically drop empty partitions
>>
>> I am not sure I agree with either of those, and the reason is that they
>> would turn low-lock operations into high-lock operations.

> For INSERT, I think that's a problem we need to work through.

Possibly, but I'm concerned about locking and deadlock issues.  The
reason that this is iffy is you would start the operation with only
an INSERT-grade lock, and then discover that you needed to add a
partition, which is surely something that needs an exclusive-grade
lock (consider two sessions trying to add the same partition at the
same time).  So I don't see how to do it without lock upgrading,
and lock upgrading is always a recipe for deadlocks.

The DELETE case is even worse because you can't physically release
storage until you're sure nothing in it is needed anymore by any open
transaction --- that introduces VACUUM-like issues as well as the
deadlock problem.

> Or are you proposing, instead, that attempts to insert beyond the
> range raise an error?

That was what I had in mind --- then adding partitions would require
a manual operation.  This would certainly be good enough for "phase I"
IMHO.

            regards, tom lane

pgsql-performance by date:

Previous
From: PFC
Date:
Subject: Re: What needs to be done for real Partitioning?
Next
From: Tom Lane
Date:
Subject: Re: What needs to be done for real Partitioning?