Re: [PATCH] Don't block HOT update by BRIN index
Josef Šimánek <josef.simanek@gmail.com>
From: Josef Šimánek <josef.simanek@gmail.com>
To: Tomas Vondra <tomas.vondra@enterprisedb.com>
Cc: Alvaro Herrera <alvherre@alvh.no-ip.org>,
Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2021-07-12T23:02:19Z
Lists: pgsql-hackers
po 12. 7. 2021 v 23:15 odesílatel Tomas Vondra <tomas.vondra@enterprisedb.com> napsal: > > > > On 7/12/21 11:02 PM, Alvaro Herrera wrote: > > On 2021-Jul-12, Josef Šimánek wrote: > > > >>> 2) Do we actually need to calculate and store hotblockingattrs > >>> separately in RelationGetIndexAttrBitmap? It seems to me it's either > >>> NULL (with amhotblocking=false) or equal to indexattrs. So why not to > >>> just get rid of hotblockingattr and rd_hotblockingattr, and do something > >>> like > >>> > >>> case INDEX_ATTR_BITMAP_HOT_BLOCKING: > >>> return (amhotblocking) ? bms_copy(rel->rd_hotblockingattr) : NULL; > >>> > >>> I haven't tried, so maybe I'm missing something? > >> > >> relation->rd_indexattr is currently not used (at least I have not > >> found anything) for anything, except looking if other values are > >> already loaded. > > > > Oh, that's interesting. What this means is that INDEX_ATTR_BITMAP_ALL > > is no longer used; its uses must have all been replaced by something > > else. It seems the only one that currently exists is for HOT in > > heap_update, which this patch replaces with the new one. In a quick > > search, no external code depends on it, so I'd be inclined to just > > remove it ... > > > > I think a boolean is much simpler. Consider a table with 1600 columns :-) > > > > I'm not sure how to verify no external code depends on that flag. I have > no idea if there's a plausible use case for it, though. I tried GitHub search before to ensure at least it is not a widely used "API". There were no results outside of PostgreSQL code itself in first 10 pages of results. > Even with 1600 columns the amount of wasted memory is only about 200B, > which is not that bad I think. Not great, not terrible. > > OTOH most tables won't have any BRIN indexes, in which case indexattr > and hotblockingattr are guaranteed to be exactly the same. So maybe > that's something we could leverage - we need to calculate the "hot" > bitmap, and in most cases we can use it for indexattr too. > > Maybe let's leave that for a separate patch, though? > > > regards > > -- > Tomas Vondra > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Ignore BRIN indexes when checking for HOT updates
- 19d8e2308bc5 16.0 landed
-
Move test for BRIN HOT behavior to stats.sql
- fe60b67250a3 15.0 landed
-
Ignore BRIN indexes when checking for HOT udpates
- 5753d4ee320b 15.0 landed