LINUX.ORG.RU
решено ФорумAdmin

Резко участились deadlock

 ,


0

2

Что то резко участились deadlock в mysql, в одной таблице. Раньше раз в год был 1 deadlock сейчас в день по 2-3 раза. После чего это произошло будет описано ниже.

Решил я создать индекс дополнительный. Вот собственно и все. После этого посыпались deadlock.

★★★★

Последнее исправление: gobot (всего исправлений: 1)

Ответ на: комментарий от gobot

неужели мускул такой тупой

Это не он тупой.
Аналогию про буханку хлеба я приводил выше. Повторю «три человека одновременно пытаются схватить одну буханку хлеба», вопрос: кому она должна достаться из этих троих? Всем троим не получиться она же одна штука.

Если да, то неужели мускул такой тупой, что не может подожать, а потом обновить эти строки?

На каком, по вашему мнению, основании он должен принять решение, какое из трех изменений правильное?

anc ★★★★★
()
Ответ на: комментарий от gobot

Второй раз «спутали» за три дня?

и не чистил я ее.
gobot ★★★ (21.08.19 19:49:51)
Потому что я таблицу почистил
gobot ★★★ (24.08.19 17:40:28)

anc ★★★★★
()
Ответ на: комментарий от gobot

Да. И вам об этом уже много раз писали здесь. И Муська тут не причем, без разницы какую субд вы будете использовать, хоть блокировщик хоть версионник, один фиг получите deadlock на одновременном изменении в конкурентных транзакциях при комите.

anc ★★★★★
()
Ответ на: комментарий от anc

один фиг получите deadlock на одновременном изменении в конкурентных транзакциях при комите

Дедлок будет только если в транзакции обновлять несколько строк в разном порядке, как тут уже приводили пример.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Если вангануть, что у тебя autocommit, то это не может вызвать дедлок.

Ещё как может. Из личного опыта. Могут ли два(всего два) пользователя сидящих рядом одновременно с точностью до секунды нажать одну и ту же кнопку в программе? Практика быстро показала что могут.

anc ★★★★★
()
Ответ на: комментарий от no-such-file

Да хоть 100500. Дедлока не будет на одной строке.

Моими словами выше «На каком, по вашему мнению, основании он должен принять решение, какое из трех изменений правильное?»

anc ★★★★★
()
Ответ на: комментарий от anc

Тебе лекцию про параллельные вычисления прочитать? Лок гарантированно получает только один процесс, даже если запрошен он одновременно несколькими.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

А что такое тогда по вашему deadlock ? Оно как-то не считает одна или две записи, тут уж пофигу. Но я понимаю что вы хотите сказать, шансов на дэдлок при обновлении только одной записи в разы меньше, чем если мы обновляем множество записей в одной транзакции.

anc ★★★★★
()
Ответ на: комментарий от anc

шансов на дэдлок при обновлении только одной записи в разы меньше

Дедлок на одной записи невозможен по определению.

что такое тогда по вашему deadlock

То же что и у всех — взаимоблокировка потоков на совместно используемых ресурсах. Типичный случай был показан выше, когда локи берутся в разном порядке.

no-such-file ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.