Setor
Новичок
Через раз вылетают deadlock'и на update с подзапросом select
Есть ли какие-то способы избавиться от [1213] Deadlock found when trying to get lock; try restarting transaction на запросах вида:
UPDATE table A, ( SELECT ... FROM table LEFT JOIN table ... ) B SET ... WHERE ...
в апдейте и селекте используется одна и та же таблица! в лефт джойне или та же или другая таблица.
Назначение запроса - обновление дерева nested seets (задание элементам дерева некоторых флагов).
Пока что склоняюсь либо к использованию temporary table, чтобы разделить селект и апдейт, либо оптимизировать селект, чтобы он возвращал только те строки, которые действительно надо обновить и делать обновление вручную (из скрипта).
-~{}~ 19.02.08 23:43:
В документации, если я правильно понял, советуется при обнаружении deadlock просто повторить запрос... Ещё один вариант решения проблемы.
Есть ли какие-то способы избавиться от [1213] Deadlock found when trying to get lock; try restarting transaction на запросах вида:
UPDATE table A, ( SELECT ... FROM table LEFT JOIN table ... ) B SET ... WHERE ...
в апдейте и селекте используется одна и та же таблица! в лефт джойне или та же или другая таблица.
Назначение запроса - обновление дерева nested seets (задание элементам дерева некоторых флагов).
Пока что склоняюсь либо к использованию temporary table, чтобы разделить селект и апдейт, либо оптимизировать селект, чтобы он возвращал только те строки, которые действительно надо обновить и делать обновление вручную (из скрипта).
-~{}~ 19.02.08 23:43:
В документации, если я правильно понял, советуется при обнаружении deadlock просто повторить запрос... Ещё один вариант решения проблемы.