AW: AW: Adding index flag showing tuple status
От | Zeugswetter Andreas SB |
---|---|
Тема | AW: AW: Adding index flag showing tuple status |
Дата | |
Msg-id | 11C1E6749A55D411A9670001FA6879633682D7@sdexcsrv1.f000.d0188.sd.spardat.at обсуждение исходный текст |
Список | pgsql-hackers |
> > > I am looking at adding an index tuple flag to indicate when a > > > heap tuple is expired so the index code can skip looking up the heap tuple. > > > > > > The problem is that I can't figure out how be sure that the heap tuple > > > doesn't need to be looked at by _any_ backend. Right now, we update the > > > transaction commit flags in the heap tuple to prevent a pg_log lookup, > > > but that is not enough because some transactions may still see that heap > > > tuple as visible. > > > > If you are only marking those, that need not be visible anymore, can you not > > simply delete that key (slot) from the index ? I know vacuum then shows a count > > mismatch, but that could probably be accounted for. > > I wasn't going to delete it, just add a flag to index scans know they > don't need to look at the heap table. If it is only a flag, you would need to go to the same trouble that vacuum already goes to (you cannot mark it if someone else is still interested in this snapshot). Thus I do not see any benefit in adding a flag, versus deleting not needed keys. To avoid the snapshot trouble you would need a xid (xmax or something), and that is 4 bytes, and not a simple flag. Andreas
В списке pgsql-hackers по дате отправления: