From: | Ron <ronljohnsonjr(at)gmail(dot)com> |
---|---|
To: | pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: Define hash partition for certain column values |
Date: | 2021-01-11 08:36:41 |
Message-ID: | 156c6b19-1eca-25bc-abb3-de7a598a2647@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 1/11/21 12:36 AM, Tom Lane wrote:
> =?utf-8?B?0JPQvtC70YPQsdC10LLQsCDQr9C90LA=?= <ishsha(at)yandex(dot)ru> writes:
>> Hello, I've found in source code that there is a function satisfies_hash_partition(oid, modulus, remainder, column_values[]) which allows to check if the certain column value will be placed in the certain partition. I' d like to know if there is an opportunity not to check the certain partition but to define which partition will be the certain column value placed in.
> If you want to control what goes where, use list partitioning (or,
> perhaps, range partitioning). Hash is only suitable if you do not
> care which partition any particular row goes to.
>
> Personally, I think hash partitioning is mostly academic, precisely
> because of that. If the partitioning doesn't line up with application
> requirements, you give up too much of the benefit of using partitions.
In non-MBCC systems, hash partitioning minimizes lock conflicts because the
writes aren't all going into the same page. OLTP systems can use this
feature to distribute writes across pages; some also allow for "mixed
pages", where records from multiple tables get written to the same page.
(This then means that one DIO is used to read a parent and all it's child
records. Naturally, range reports are *very* slow, but sometimes OLTP
performance is paramount.)
--
Angular momentum makes the world go 'round.
From | Date | Subject | |
---|---|---|---|
Next Message | Jack Orenstein | 2021-01-11 16:36:52 | Understanding GIN indexes |
Previous Message | Tom Lane | 2021-01-11 06:36:08 | Re: Define hash partition for certain column values |