Re: Improve the efficiency of _bt_killitems. - Mailing list pgsql-hackers

From feichanghong
Subject Re: Improve the efficiency of _bt_killitems.
Date
Msg-id tencent_988E2A846425C877D40CBD4EDC0F0C934B07@qq.com
Whole thread Raw
In response to Re: Improve the efficiency of _bt_killitems.  (Heikki Linnakangas <hlinnaka@iki.fi>)
Responses Re: Improve the efficiency of _bt_killitems.
List pgsql-hackers


On Nov 1, 2024, at 16:24, Heikki Linnakangas <hlinnaka@iki.fi> wrote:

On 01/11/2024 09:19, feichanghong wrote:
Hi hackers,
In the _bt_killitems function, the following logic is present: we search to the right for an index item that matches the heap TID and attempt to mark it as dead. If that index item has already been marked as dead by other concurrent processes, we will continue
searching. However, there should not be any more matching index items
on the current page.
Why could there not be more matching items on the page?

Are you assuming a unique index? Even then it's not right; you can have multiple index entries point to different heap tuples with the same key, as long as they're not visible at the same time. For example, if you UPDATE or DELETE+INSERT a row.

Maybe I didn't describe it clearly. What I meant to say is that there shouldn't
be multiple index items on the current page pointing to the same heap TID(ctid).
rather than the same index key.

Best Regards,
Fei Changhong

pgsql-hackers by date:

Previous
From: Heikki Linnakangas
Date:
Subject: Re: Improve the efficiency of _bt_killitems.
Next
From: Nazir Bilal Yavuz
Date:
Subject: Re: Using read stream in autoprewarm