sql >> Databasteknik >  >> RDS >> Mysql

UPPDATERA med SELECT, kommer det att låsa varje rad eller alla VALDA poster

UPDATE körs i transaktion - det är en atomic operation, vilket innebär att om en av raderna misslyckas (på grund av unika begränsningar till exempel) kommer den inte att uppdatera någon av de 5000 raderna. Detta är en av ACID-egenskaperna i en transaktionsdatabas.

På grund av detta är UPDATE håll ett lås på alla rader för hela transaktionen. Annars kan en annan transaktion uppdatera värdet på en rad ytterligare, baserat på dess aktuella värde (låt oss säga att uppdatera posters inställt värde =värde * '2'). Detta uttalande bör ge olika resultat beroende på om den första transaktionen genomförs eller återställs. På grund av detta bör den vänta på att den första transaktionen slutför alla 5000 uppdateringar.

Om du vill släppa låsen gör du bara uppdateringen i (mindre) omgångar.

P.S. autocommit kontrollerar om varje uttalande utfärdas i en egen transaktion, men påverkar inte exekveringen av en enda fråga




  1. 4 sätt att ändra tidszonen i Oracle

  2. importera sql-fil till en databas med wamp

  3. MySQL:Beräknar återstående dagar av prenumerationer baserat på betalningar

  4. Ta bort dubbletter av rader från MySql Table