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