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

Deadlock durante la creazione di istanze di lavoro

Il problema deriva dal blocco condiviso. Per impostazione predefinita, il metodo createJobExecution viene eseguito all'interno della transazione con un livello di isolamento serializzabile. Quando viene utilizzato questo livello di isolamento, InnoDB converte implicitamente tutte le semplici istruzioni SELECT in SELECT ... LOCK IN SHARE MODE. Pertanto, JOB_INST_UN è bloccato condiviso a causa della query sulla tabella dell'istanza. E poi, quando si inserisce l'istanza di lavoro, è richiesto un blocco esclusivo su JOB_INST_UN. Si verificava un deadlock, se questo indice univoco era bloccato e condiviso da un'altra transazione.