sql >> Databasteknik >  >> RDS >> Mysql

Varför commit orsakar inte dödläge

Jag misstänker att detta är ett kantfall som inte är värt att effektivisera. Observera att du var tvungen att få 3 sessioner för att försöka ta samma rad -- en sällsynt händelse. Och du gjorde en ROLLBACK -- också sällsynt. Så dödläget som uppstod är överdrivet, men inte värt att fixa. Av denna anledning måste man vara beredd att hantera dödlägen överallt.

FYI, om detta var tre noder i ett Galera-kluster skulle det finnas fel på COMMIT som koden skulle behöva hantera. Jag misstänker att det finns ännu fler kombinationer av konstiga saker på gång om du tillämpar den här transaktionen (med återställning eller commit) flera gånger på flera noder.

Nu till din fråga... Förmodligen inträffade inte dödläget eftersom en av trådarna fick det exklusiva låset och den andra fick ett "vänta" istället för ett "stoppläge".




  1. Förhindrar cirkulär sammanfogning, rekursiva sökningar

  2. Laravel Query Builder - avancerade villkorssatser (valfria parametrar)

  3. Det effektivaste sättet att infoga rader i MySQL-databasen

  4. Hur man stoppar/startar databasens e-postkö i SQL Server (T-SQL)