sql >> Databasteknik >  >> RDS >> Mysql

MySQL:Samtidiga uppdateringar (via trådar) på en enkel tabell

Låsningen är implicit, ja, men den görs inte av executeUpdate() . Lagringsmotorn i MySQL hanterar låsningen och upplåsningen.

Varje gång du skriver till en MyISAM-tabell, väntar din fråga på att skrivlåset på tabellen ska vara tillgängligt, skrivlåset hämtas, skrivningen är klar och skrivlåset frigörs. Det finns ingen äkta skrivsamfällighet i MyISAM eftersom varje arbetare faktiskt står i kö för skrivlåset. Du får inget fel eftersom skrivförfrågningarna är serialiserade.

Situationen med InnoDB är liknande men mycket annorlunda, eftersom InnoDB bara låser en del av tabellen, vanligtvis på radnivå, där InnoDB kan låsa ett intervall inom ett index och därigenom låsa raderna i det intervallet i indexet (och lucka som föregår dem). Denna låsning är mer detaljerad än bordslåsning, vilket möjliggör förbättrat samtidighetsbeteende, men det finns ingen samtidig operation på samma rad – varje arbetare väntar på det eller de lås som den behöver.

I båda fallen är låsen implicit tagna.




  1. php foreach loop och addmore-knappen i ett formulär

  2. Laravel 5.1 konsumerande tvål wsdl-tjänst med kontroll och modell

  3. Hur synkroniserar man två tabeller med olika MySQL-databaser på samma maskin?

  4. MSSQL Reguljärt uttryck