id in ({many_ids});
При паралельных процессах, которые пытаются обновить одинаковые айдишки натыкаются на ошибку о deadlock.
По хорошему как решать такие проблемы?
Пример не из проды, на проде я инкременчу счетчик внутри транзакции, то есть у меня много тредов пытаются паралельно заинкрементить счетчик и каждый в своей транзакции.
А проблема-то в чём (ну deadlock и deadlock — бывает)?
Добавь order by id. База сначала выбирает, потом лочит. Для разных запросов может в разном порядке и будет дедлок. В определенном порядке просто ждать будет
Только order by на select for update сделайте, потом update
Обсуждают сегодня