UPDATE
działa w transakcji - jest to atomic
operacja, co oznacza, że jeśli jeden z wierszy ulegnie awarii (na przykład z powodu ograniczenia unikatowego), nie zaktualizuje żadnego z 5000 wierszy. Jest to jedna z właściwości ACID transakcyjnej bazy danych.
Z tego powodu UPDATE
przytrzymaj blokadę na wszystkich wierszach przez całą transakcję. W przeciwnym razie inna transakcja może dalej aktualizować wartość wiersza, na podstawie jego bieżącej wartości (powiedzmy, że aktualizacja rekordów ustawiona wartość =wartość * '2'). Ta instrukcja powinna dać inny wynik w zależności od tego, czy pierwsza transakcja zostanie zatwierdzona, czy wycofana. Z tego powodu powinien poczekać, aż pierwsza transakcja zakończy wszystkie 5000 aktualizacji.
Jeśli chcesz zwolnić blokady, po prostu przeprowadź aktualizację w (mniejszych) partiach.
PS autocommit
kontroluje, czy każde oświadczenie jest wydawane we własnej transakcji, ale nie wpływa na wykonanie pojedynczego zapytania