sql >> Database teknologi >  >> RDS >> Mysql

OPDATERING med SELECT, vil det låse hver række eller alle SELECTED records

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




  1. mysql vælg antallet af poster for hver måned

  2. Mysql join baseret på max(tidsstempel)

  3. Hvordan rettes forkerte strengværdifejl?

  4. apostrof under indsættelse (Mysql)