Re: Patch: Global Unique Index

From: Vik Fearing <vik(at)postgresfriends(dot)org>
To: Cary Huang <cary(dot)huang(at)highgo(dot)ca>, Thomas Kellerer <shammat(at)gmx(dot)net>
Cc: pgsql-hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Patch: Global Unique Index
Date: 2022-11-29 12:58:21
Message-ID: ae3b677b-7f62-6c6a-bd54-53579f057ae1@postgresfriends.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 11/24/22 19:15, Cary Huang wrote:
> ---- On Thu, 24 Nov 2022 08:00:59 -0700 Thomas Kellerer wrote ---
> > Pavel Stehule schrieb am 24.11.2022 um 07:03:
> > > There are many Oracle users that find global indexes useful despite
> > > their disadvantages.
> > >
> > > I have seen this mostly when the goal was to get the benefits of
> > > partition pruning at runtime which turned the full table scan (=Seq Scan)
> > > on huge tables to partition scans on much smaller partitions.
> > > Partition wise joins were also helpful for query performance.
> > > The substantially slower drop partition performance was accepted in thos cases
> > >
> > >
> > > I think it would be nice to have the option in Postgres as well.
> > >
> > > I do agree however, that the global index should not be created automatically.
> > >
> > > Something like CREATE GLOBAL [UNIQUE] INDEX ... would be a lot better
> > >
> > >
> > > Is it necessary to use special marks like GLOBAL if this index will
> > > be partitioned, and uniqueness will be ensured by repeated
> > > evaluations?
> > >
> > > Or you think so there should be really forced one relation based
> > > index?
> > >
> > > I can imagine a unique index on partitions without a special mark,
> > > that will be partitioned, and a second variant classic index created
> > > over a partitioned table, that will be marked as GLOBAL.
> >
> >
> > My personal opinion is, that a global index should never be created
> > automatically.
> >
> > The user should consciously decide on using a feature
> > that might have a serious impact on performance in some areas.
>
>
> Agreed, if a unique index is created on non-partition key columns without including the special mark (partition key columns), it may be a mistake from user. (At least I make this mistake all the time). Current PG will give you a warning to include the partition keys, which is good.
>
> If we were to automatically turn that into a global unique index, user may be using the feature without knowing and experiencing some performance impacts (to account for extra uniqueness check in all partitions).

I disagree. A user does not need to know that a table is partitionned,
and if the user wants a unique constraint on the table then making them
type an extra word to get it is just annoying.
--
Vik Fearing

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Chris Travers 2022-11-29 13:05:19 Re: Add 64-bit XIDs into PostgreSQL 15
Previous Message Simon Riggs 2022-11-29 12:53:02 Re: Bug in wait time when waiting on nested subtransaction