> "Horsun Vlad" ...
> >    Если тебе интересно, могу поделиться предполагаемым
> > решением этой траблы.
>
> Делись, но в мыльницу ес-но ;-)

    Собственно идея весьма проста и неоригинальна :) С дедлоками всю
жизнь борются вводя порядок захвата блокировок. Т.к. мы имеем дело со
страницами данных (т.е. однотипными), то единственный порядок - это их
номера. Т.е. бекверсии и фрагменты должы указывать на страницы с
бОльшими физическими номерами.

    Я делал реализацию для вулкана, когда ловил в нём дедлок, приводящий
к мервому зависанию (в tpcc). Там причина оказалась другой (RSB_s_update),
но, как минимум, код рабочий и не приводит к видимым отрицательным эффектам.
dpm в вулкане вряд ли сильно отличается от dpm в FB, уж не знаю, как там в
Yaffil'е ;)

    Было бы идеально сделать тестовый билд Yaffil'а и дать тому парню с sql.ru 
на
попробовать, раз уж у него так часто это вылазит.

Влад

PS ответ Анны на моё письмо с описанием этой идеи

    I just talked to Jim.  His recollection is that the
original code put back versions and fragments on higher
pages, to avoid this problem.  While it will tend to
limit the reuse of space on older pages, that space will
aggregate to the point that it can be used for new records
or better yet, back versions of records on the page.
So, your suggestion has his (and my) agreement

;)

Attachment: dpm.diff
Description: Binary data

Ответить