UPDATE
kører i transaktion - det er en atomic
operation, hvilket betyder, at hvis en af rækkerne fejler (f.eks. på grund af en unik begrænsning), vil den ikke opdatere nogen af de 5000 rækker. Dette er en af ACID-egenskaberne i en transaktionsdatabase.
På grund af dette er UPDATE
hold en lås på alle rækkerne for hele transaktionen. Ellers kan en anden transaktion opdatere værdien af en række yderligere, baseret på dens aktuelle værdi (lad os sige, at opdatere records sæt værdi =værdi * '2'). Denne erklæring skulle give forskellige resultater afhængigt af, om den første transaktion forpligtes eller tilbageføres. På grund af dette bør den vente på, at den første transaktion fuldfører alle 5000 opdateringer.
Hvis du vil frigive låsene, skal du bare lave opdateringen i (mindre) partier.
P.S. autocommit
kontrollerer, om hver erklæring er udstedt i egen transaktion, men påvirker ikke udførelsen af en enkelt forespørgsel