Thanks Maxim and Jeff.
1. Do you have any pointers to the killbits issue on hot standby slaves? We
do use a hot standby instance for many queries. So I want to learn more
about it.
2. I am now considering partitioning the table. I am curious if we can set
up partitions by mutable columns. More specifically, <status, created>,
where the status is mutable, and usually ends up in terminal states
(success, failure or aborted).

I could not find any documentation on the performance implication of
partitioning by mutable column, any guidance would be helpful. I had
previously underestimated the impact of index on a mutable column, so I
want to be cautious this time.





On Fri, 1 Sept 2023 at 11:02, Maxim Boguk <maxim.bo...@gmail.com> wrote:

> But anyway, PostgreSQL has features to prevent the index bloat from
>> becoming too severe of a problem, and you should figure out why they are
>> not working for you.  The most common ones I know of are 1) long open
>> snapshots preventing clean up, 2) all index scans being bitmap index scans,
>> which don't to micro-vacuuming/index hinting the way ordinary btree
>> index scans do, and 3) running the queries on a hot-standby, where index
>> hint bits must be ignored.  If you could identify and solve this issue,
>> then you wouldn't need to twist yourself into knots avoiding non-HOT
>> updates.
>>
>
> I am not sure that kill bits could be a complete fix for indexes with tens
> of millions dead entries and only a handful of live entries. As I
> understand the mechanics of killbits - they help to avoid excessive heap
> visibility checks for dead tuples, but tuples with killbit are still should
> be read from the index first. And with many millions of dead entries it
> isn't free.
>
> PS: ignoring killbits on hot standby slaves is a source of endless pain in
> many cases.
>
> --
> Maxim Boguk
> Senior Postgresql DBA
>
> Phone UA: +380 99 143 0000
> Phone AU: +61  45 218 5678
>
>

Reply via email to