Un deadlock richiede di analizzare le transazioni coinvolte e gestire un nuovo tentativo completo, limitato e sicuro.
Possibili cause
- Transazione lunga non chiusa
- Query che aggiorna molte righe senza indice efficace
- Transazioni che acquisiscono lock in ordine differente
- Processo in attesa di una risorsa applicativa
Cosa controllare
- Leggi ultimo deadlock e stato InnoDB
- Identifica sessioni e transazioni aperte
- Analizza execution plan e indici
- Confronta query con job e richieste applicative
- Misura durata delle transazioni
Come intervenire
- Riduci durata e ampiezza delle transazioni
- Aggiungi indici verificati dal piano di esecuzione
- Acquisisci risorse in ordine coerente
- Ritenta l’intera transazione annullata con un limite di tentativi e protezione contro effetti esterni duplicati
- Non aumentare il timeout senza rimuovere la causa
Guide Xlogic correlate
- MySQL error 1049 dopo migrazione: Unknown database
- MySQL error 1142 in phpMyAdmin: Command denied to user
- MySQL error 1062: Duplicate entry for key