Re: On partitioning
От | José Luis Tallón |
---|---|
Тема | Re: On partitioning |
Дата | |
Msg-id | 548EC179.6080002@adv-solutions.net обсуждение исходный текст |
Ответ на | Re: On partitioning (Claudio Freire <klaussfreire@gmail.com>) |
Ответы |
Re: On partitioning
|
Список | pgsql-hackers |
On 12/15/2014 07:42 AM, Claudio Freire wrote: > [snip] > If you do that, you start with empty partitions, and each insert > updates the BRIN tuple. Avoiding concurrency loss in this case would > be tricky, but in theory this could allow very general partition > exclusion. In fact it could even work with constraint exclusion right > now: you'd have a single-tuple BRIN index for each partition and > benefit from it. But you don't need to pay the price of updating BRIN > indexes, as min-max tuples for each partition can be produced while > creating the partitions if the syntax already provides the > information. Then, it's just a matter of querying this meta-data which > just happens to have the form of a BRIN tuple for each partition. Yup. Indeed this is the way I outlined in my previous e-mail. The only point being: Why bother with BRIN when we already have the range machinery, and it's trivial to add pointers to partitions from each range? I suggested that BRIN would solve a situation when the amount of partitions is huge (say, thousands) and we might need to be able to efficiently locate the appropriate partition. In this situation, a linear search might become prohibitive, or the data structure (a simple B-Tree, maybe) become too big to be worth keeping in memory. This is where being able to store the "partition index" on disk would be interesting. Moreover, I guess that ---by using this approach (B-Tree[range]->partition_id and/or BRIN)--- we could efficiently answer the question "do we have any tuple with this key in some partition?" which AFAICS is pretty close to us having "global indexes". Regards, / J.L.
В списке pgsql-hackers по дате отправления: