Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Współbieżność MySQL, jak to działa i czy muszę to obsługiwać w mojej aplikacji?

Instrukcje SQL są niepodzielne. To znaczy, jeśli wykonasz coś takiego:

UPDATE Cars SET Sold = Sold + 1

Nikt nie może zmienić Sold zmienna podczas tego oświadczenia. Jest zawsze zwiększany o 1, nawet jeśli ktoś inny jednocześnie wykonuje tę samą instrukcję.

Problem pojawia się, jeśli masz zdania, które są od siebie zależne:

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

Pomiędzy tymi zapytaniami inny użytkownik może zmienić tabelę Samochody i zaktualizować Sprzedane. Aby temu zapobiec, zapakuj go w transakcję:

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

Transakcje są obsługiwane przez InnoDB, ale nie przez 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. Windows:XAMPP vs WampServer vs EasyPHP vs alternatywa

  2. Odpowiednik Laravel-5 „LIKE” (Eloquent)

  3. Minimalne GRANTy potrzebne mysqldump do zrzucenia pełnego schematu? (Brakuje wyzwalaczy!!)

  4. Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo '/tmp/mysql.sock' (2)

  5. Jak utworzyć procedurę składowaną w MySQL?