Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Deadlock beim Erstellen von Jobinstanzen

Das Problem kommt von der gemeinsamen Sperre. Standardmäßig wird die createJobExecution-Methode innerhalb der Transaktion mit serialisierbarer Isolationsstufe ausgeführt. Wenn diese Isolationsstufe verwendet wird, konvertiert InnoDB implizit alle einfachen SELECT-Anweisungen in SELECT ... LOCK IN SHARE MODE. Daher ist JOB_INST_UN wegen der Abfrage der Instanztabelle gemeinsam gesperrt. Und dann ist beim Einfügen einer Jobinstanz eine exklusive Sperre für JOB_INST_UN erforderlich. Deadlock trat auf, wenn dieser eindeutige Index von einer anderen Transaktion gemeinsam genutzt wurde.