Re: Re[4]: [HACKERS] Fwd: Joins and links
От | Tom Lane |
---|---|
Тема | Re: Re[4]: [HACKERS] Fwd: Joins and links |
Дата | |
Msg-id | 22190.931206784@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re[4]: [HACKERS] Fwd: Joins and links (Leon <leon@udmnet.ru>) |
Список | pgsql-hackers |
Leon <leon@udmnet.ru> writes: > This problem can be solved. An offhand solution is to have > an additional system field which will point to new tuple left after > update. It is filled at the same time as the original tuple is > marked invalid. So the scenario is as follows: we follow the link, > and if we find that in the tuple where we arrived this system field > is not NULL, we go to (the same table of course) where it is pointing > to. Sure VACUUM will eliminate these. Performance penalty is small. Is it small? After multiple updates to the referenced tuple, you'd be talking about following a chain of TID references in order to find the referenced tuple from the referencing tuple. I'd expect this to take more time than an index access within a fairly small number of updates (maybe four or so, just on the basis of counting disk-block fetches). VACUUM is an interesting problem as well: to clean up the chains as you suggest, VACUUM could no longer be a one-table-at-a-time proposition. It would have to be able to update tuples elsewhere while repacking the tuples in the current table. This probably means that VACUUM requires a global lock across the whole database. Also, making those updates in an already-vacuumed table without undoing its nicely vacuummed state might be tricky. regards, tom lane
В списке pgsql-hackers по дате отправления: