Re: SSI freezing bug

Поиск
Список
Период
Сортировка
От Andres Freund
Тема Re: SSI freezing bug
Дата
Msg-id 5974d57c-4cd7-4f71-9678-34887ede6abc@email.android.com
обсуждение исходный текст
Ответ на Re: SSI freezing bug  (Heikki Linnakangas <hlinnakangas@vmware.com>)
Ответы Re: SSI freezing bug  (Hannu Krosing <hannu@2ndQuadrant.com>)
Re: SSI freezing bug  (Heikki Linnakangas <hlinnakangas@vmware.com>)
Список pgsql-hackers

Heikki Linnakangas <hlinnakangas@vmware.com> schrieb:
>Kevin Grittner <kgrittn@ymail.com> wrote:
>>Andres Freund <andres@2ndquadrant.com> wrote:
>>>> On 2013-09-20 13:55:36 +0300, Heikki Linnakangas wrote:
>>>>> When a tuple is predicate-locked, the key of the lock is
>ctid+xmin.
>>>>> However, when a tuple is frozen, its xmin is changed to FrozenXid.
>>That
>>>>> effectively
>>>>> invalidates any predicate lock on the tuple, as checking for a
>lock
>>on
>>>>> the
>>>>> same tuple later won't find it as the xmin is different.
>>>>>
>>>>> Attached is an isolationtester spec to demonstrate this.
>>>>
>>>> Do you have any idea to fix that besides keeping the xmin horizon
>>below the
>>>> lowest of the xids that are predicate locked? Which seems nasty to
>>>> compute and is probably not trivial to fit into the procarray.c
>>>> machinery?
>>>
>>> A better solution probably is to promote tuple-level locks if they
>>exist
>>> to a relation level one upon freezing I guess?
>>
>>That would work.  A couple other ideas would be to use the oldest
>>serializable xmin which is being calculated in predicate.c to
>>either prevent freezing of newer transaction or to summarize
>>predicate locks (using the existing SLRU-based summarization
>>functions) which use xmin values for xids which are being frozen. 
>>The transactions must already be committed, and so are eligible for
>>summarization.
>
>What's the point of using xmin as part of the lock key in the first
>place, wouldn't ctid alone suffice? If the tuple was visible to the
>reading transaction, it cannot be vacuumed away until the transaction
>commits. No other tuple can appear with the same ctid.

SSI locks can live longer than one TX/snapshot.

Andres

-- 
Please excuse brevity and formatting - I am writing this on my mobile phone.

Andres Freund                       http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: Re: SSI freezing bug
Следующее
От: Hannu Krosing
Дата:
Сообщение: Re: SSI freezing bug