[PATCH] Don't block HOT update by BRIN index
От | Josef Šimánek |
---|---|
Тема | [PATCH] Don't block HOT update by BRIN index |
Дата | |
Msg-id | CAFp7QwpMRGcDAQumN7onN9HjrJ3u4X3ZRXdGFT0K5G2JWvnbWg@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: [PATCH] Don't block HOT update by BRIN index
|
Список | pgsql-hackers |
Hello! Tomáš Vondra has shared a few ideas to improve BRIN index in czech PostgreSQL mail list some time ago [1 , in czech only]. This is first try to implement one of those ideas. Currently BRIN index blocks HOT update even it is not linked tuples directly. I'm attaching the initial patch allowing HOT update even on BRIN indexed columns. This patch went through an initial review on czech PostgreSQL mail list [1]. It can be viewed online (latest version) on GitHub [2] as well. - small overview 1. I have added "amhotblocking" flag to index AM descriptor set to "true" for all, except BRIN, index types. And later in heap_update method (heapam.c) I do filter attributes based on this new flag, instead of currently checking for any existing index. 2. I had to enhance the "RelationGetIndexAttrBitmap" function to be able to return a bitmap of index attribute numbers related to the new AM flag using "INDEX_ATTR_BITMAP_HOT_BLOCKING" filter. PS: Originally the "INDEX_ATTR_BITMAP_ALL" filter was used for HOT check update and most likely could be removed (including all logic related in RelationGetIndexAttrBitmap), since I have not found any other usage. 3. I have created an initial regression test using "pg_stat_get_tuples_hot_updated" to find out HOT was successful on the BRIN indexed column. Unfortunately "pg_stat_get_tuples_hot_updated" is not updated immediately and I have not found any way to enforce the update. Thus (at least for now) I have used a similar approach to stats.sql using the "wait_for_stats" function (waiting for 30 seconds and checking each 100ms for change). I'm attaching patch to CF 2021-07. [1] https://groups.google.com/g/postgresql-cz/c/oxA_v3H17Qg [2] https://github.com/simi/postgres/pull/7
Вложения
В списке pgsql-hackers по дате отправления: