Задать вопрос
  • Mysql: Deadlock found when trying to get lock; try restarting transaction

    @fred
    Не, понятно что в любой момент.
    На пальцах примерно так
    Начинаем работу — табличка пустая
    на каждое увеличение счетчика вставляем запись
    qty
    — 1
    1
    1
    Узнать текущее значение счетчика — select sum(qty) from counterTable
    Ночью в одной транзакции
    fullQty = select sum(qty)
    delete from counterTable
    insert into counterTable values (fullQty)

    на следующий день после увеличения счетчика получаем
    qty
    — 3
    1
    1

    текущее значение счетчика так же — select sum(qty)

    Здесь получается что хоть и незначительно увеличивается получение счетчика. уходят блокировки на вставку.