Mysql
 sql >> база данни >  >> RDS >> Mysql

UPDATE с SELECT, ще заключи ли всеки ред или всички ИЗБРАНИ записи

UPDATE работи в транзакция - това е atomic операция, което означава, че ако един от редовете не успее (например поради уникално ограничение), той няма да актуализира нито един от 5000-те реда. Това е едно от свойствата на ACID на транзакционна база данни.

Поради това UPDATE задръжте заключване на всички редове за цялата транзакция. В противен случай друга транзакция може допълнително да актуализира стойността на ред въз основа на текущата му стойност (да речем, че актуализираните записи на стойността =стойност * '2'). Това изявление трябва да доведе до различен резултат в зависимост от това дали първата транзакция се ангажира или отменя. Поради това трябва да изчака първата транзакция, за да завърши всички 5000 актуализации.

Ако искате да освободите ключалките, просто направете актуализацията на (по-малки) партиди.

P.S. autocommit контролира дали всяко изявление е издадено в собствена транзакция, но не оказва влияние върху изпълнението на една заявка




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да разберете потребителското име и паролата за mysql база данни

  2. Как да настроите hibernate-mapping, за да разрешите низове, по-дълги от 255 знака?

  3. MySQL SELECT последните няколко дни?

  4. Какъв тип/дължина на колона трябва да използвам за съхраняване на хеширана парола на Bcrypt в база данни?

  5. Синхронизирано изпълнение на съхранени процедури в mysql