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 по дате отправления:

Предыдущее
От: Leon
Дата:
Сообщение: Re[2]: [HACKERS] Fwd: Joins and links
Следующее
От: Leon
Дата:
Сообщение: Re[6]: [HACKERS] Fwd: Joins and links