sql >> Databasteknik >  >> RDS >> Mysql

MySQL "välj för uppdatering" beteende

Låt mig gå igenom dina fall och förklara hur dessa lås fungerar:

1 fall

T1 vill uppdatera några rader i din testtabell. Denna transaktion sätter IX-lås på alla tabeller och X-lås på de första 5 raderna.

T2 vill uppdatera några rader i din testtabell. Denna transaktion sätter IX (eftersom IX är kompatibelt med IX) lås på alla tabeller och försöker till de första 5 raderna men det kan inte göra det eftersom X inte är kompatibel med X

Så vi mår bra.

2.1 fall

T1 vill uppdatera några rader i din testtabell. Denna transaktion satte IX-lås på alla bord och X-lås på de första 5 raderna.

T2 vill välja några rader från din testtabell. Och den placerar inga lås (eftersom InnoDB tillhandahåller icke-låsande läsningar)

2.1 fall

T1 vill uppdatera några rader i din testtabell. Denna transaktion satte IX-lås på alla bord och X-lås på de första 5 raderna.

T2 vill uppdatera (välj för uppdatering) några rader från din testtabell. Placera IS på hela bordet och försöker få S-lås på raden och misslyckas eftersom X och S inte är kompatibla.

Var också alltid medveten om isoleringsnivån:olika nivåer gör att olika mekanismer frigör/skaffar lås

Hoppas det hjälper




  1. PHP-formulär laddar inte upp filen

  2. Varför får jag Kan inte skicka parameter 2 genom referensfel när jag använder bindParam med ett konstant värde?

  3. Hur man hämtar ett OBJECT_NAME() från en annan databas i SQL Server

  4. Hur man skapar den länkade servern för SQL Server 2008 där vi har databasen från 2000 och 2005