Mysql
 sql >> Database >  >> RDS >> Mysql

Come aggirare l'errore MySQL Deadlock trovato durante il tentativo di ottenere il blocco; prova a riavviare la transazione

Se stai utilizzando InnoDB o qualsiasi RDBMS transazionale a livello di riga, è possibile che qualsiasi la transazione di scrittura può causare un deadlock, anche in situazioni perfettamente normali. Tabelle più grandi, scritture più grandi e blocchi di transazione lunghi spesso aumenteranno la probabilità che si verifichino deadlock. Nella tua situazione, è probabilmente una combinazione di questi.

L'unico modo per gestire veramente i deadlock è scrivere il codice per aspettarseli. Questo generalmente non è molto difficile se il codice del database è ben scritto. Spesso puoi semplicemente inserire un try/catch attorno alla logica di esecuzione della query e cercare un deadlock quando si verificano errori. Se ne catturi uno, la cosa normale da fare è semplicemente tentare di eseguire nuovamente la query non riuscita.

Consiglio vivamente di leggere questa pagina nel manuale MySQL. Ha un elenco di cose da fare per affrontare i deadlock e ridurne la frequenza.