Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Contornando o erro do MySQL Deadlock encontrado ao tentar obter o bloqueio; tente reiniciar a transação


Se você estiver usando o InnoDB ou qualquer RDBMS transacional em nível de linha, é possível que qualquer write transação pode causar um deadlock, mesmo em situações perfeitamente normais. Tabelas maiores, gravações maiores e blocos de transação longos geralmente aumentam a probabilidade de ocorrência de deadlocks. Na sua situação, provavelmente é uma combinação destes.

A única maneira de realmente lidar com deadlocks é escrever seu código para esperá-los. Isso geralmente não é muito difícil se o código do banco de dados estiver bem escrito. Muitas vezes você pode simplesmente colocar um try/catch em torno da lógica de execução da consulta e procure um deadlock quando ocorrerem erros. Se você pegar um, o normal é tentar executar a consulta com falha novamente.

Eu recomendo que você leia esta página no manual do MySQL. Ele tem uma lista de coisas a fazer para ajudar a lidar com impasses e reduzir sua frequência.