On 25/08/17 10:28, Chris Travers wrote:
> 
> 
> On Thu, Aug 24, 2017 at 9:44 PM, Andres Freund <and...@anarazel.de
> <mailto:and...@anarazel.de>> wrote:
> 
>     Hi,
> 
>     On 2017-08-18 12:12:58 +0300, Ildar Musin wrote:
>     > While we've been developing pg_pathman extension one of the most 
> frequent
>     > questions we got from our users was about global index support. We 
> cannot
>     > provide it within an extension. And I couldn't find any recent 
> discussion
>     > about someone implementing it. So I'm thinking about giving it a shot 
> and
>     > start working on a patch for postgres.
> 
>     FWIW, I personally think for constraints the better approach is to make
>     the constraint checking code cope with having to check multiple
>     indexes. Initially by just checking all indexes, over the longer term
>     perhaps pruning the set of to-be-checked indexes based on the values in
>     the partition key if applicable.   The problem with creating huge global
>     indexes is that you give away some the major advantages of partitioning:
>     - dropping partitions now is slow / leaves a lof of garbage again
>     - there's no way you can do this with individual partitions being remote
>       or such
>     - there's a good chunk of locality loss in global indexes
> 
>     The logic we have for exclusion constraints checking can essentially be
>     extended to do uniqueness checking over multiple partitions. Depending
>     on the desired deadlock behaviour one might end up doing speculative
>     insertions in addition.  The foreign key constraint checking is fairly
>     simple, essentially one "just" need to remove the ONLY from the
>     generated check query.
> 

+1 (or +as much as I am allowed to get away with really ;) )

> 
> To be clear, this would still require a high-level concept of a global
> index and the only question is whether it gets stored as multiple
> partitions against partitioned tables vs stored in one giant index, right?
> 
No, just global constraints. For example, if you consider unique index
to be implementation detail of a unique constraint, there is nothing
stopping us to use multiple such indexes (one per partition) as
implementation detail to single global unique constraint. No need for
global index at all.

-- 
  Petr Jelinek                  http://www.2ndQuadrant.com/
  PostgreSQL Development, 24x7 Support, Training & Services


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to