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

MySQL Deadlock med en insert, der hæver en trigger

Tråd 2 har en delt lås på rækken i brugertabellen.

Derefter forsøger tråd 1 at få en eksklusiv lås på samme række og går i låsevent.

Men tråd 1 vil ikke have mulighed for at time-out, fordi tråd 2 så forsøger at eskalere sin lås til eksklusiv... men for at gøre det skal han vente på tråd 1, som er i lås venter, men den venter på tråd 2.

De blokerer hver for hinanden.

Det er et dødvande.

Serveren vælger en transaktion at dræbe, så de ikke blokerer hinanden unødigt.

Deadlock-detektion gør det muligt for den ene tråd straks at lykkes på bekostning af den anden. Ellers ville de begge sidde fast i lås, indtil en af ​​dem døde af at vente for længe.

Du er i autocommit-tilstand, men det betyder selvfølgelig ikke, at du ikke er i en transaktion. Hver forespørgsel med InnoDB håndteres stadig i en transaktion, men med autocommit startes transaktionen implicit, når forespørgslen begynder at udføre, og implicit begået, når den lykkes.



  1. SSL-forbindelsesfejl ved forbindelse til RDS MySQL fra Django

  2. Sådan rettes ORA-12505, TNS:listener kender i øjeblikket ikke til SID givet i forbindelsesbeskrivelsen

  3. Kan jeg SSH til MySQL med GUI-værktøjerne?

  4. Sådan løses Ingen forespørgsel i datareader-fejl?