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

MySQL паралелност, как работи и трябва ли да го обработвам в приложението си

SQL изразите са атомарни. Тоест, ако изпълните нещо подобно:

UPDATE Cars SET Sold = Sold + 1

Никой не може да промени Sold променлива по време на това изявление. Винаги се увеличава с 1, дори ако някой друг изпълнява същото изявление едновременно.

Проблемът възниква, ако имате изрази, които зависят един от друг:

a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;

Между тези заявки друг потребител може да промени таблицата Коли и да актуализира Продадено. За да предотвратите това, обвийте го в транзакция:

BEGIN;
a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;
COMMIT;

Транзакциите се поддържат от InnoDB, но не и от MyISAM.




  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. Изберете множество дубликати на полета от MySQL база данни

  3. проверете дали една колона съдържа ВСИЧКИ стойности на друга колона - Mysql

  4. PHP MYSQL извлича ТЕКСТ с нови редове

  5. Записване на HABTM с допълнителни полета?