Si vous utilisez InnoDB ou tout SGBDR transactionnel au niveau de la ligne, il est possible que tout La transaction d'écriture peut provoquer un blocage, même dans des situations parfaitement normales. Des tables plus grandes, des écritures plus importantes et de longs blocs de transaction augmentent souvent la probabilité de blocages. Dans votre situation, il s'agit probablement d'une combinaison de ces éléments.
La seule façon de vraiment gérer les blocages est d'écrire votre code pour les attendre. Ce n'est généralement pas très difficile si le code de votre base de données est bien écrit. Souvent, vous pouvez simplement mettre un try/catch
contourner la logique d'exécution de la requête et rechercher un blocage lorsque des erreurs se produisent. Si vous en attrapez un, la chose normale à faire est simplement d'essayer d'exécuter à nouveau la requête qui a échoué.
Je vous recommande vivement de lire cette page dans le manuel MySQL. Il contient une liste de choses à faire pour aider à faire face aux blocages et à réduire leur fréquence.