Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Parallelität, wie funktioniert sie und muss ich sie in meiner Anwendung handhaben?

SQL-Anweisungen sind atomar. Das heißt, wenn Sie so etwas ausführen:

UPDATE Cars SET Sold = Sold + 1

Niemand kann den Sold ändern Variable während dieser Anweisung. Er wird immer um 1 erhöht, auch wenn jemand anderes gleichzeitig dieselbe Anweisung ausführt.

Das Problem tritt auf, wenn Sie Anweisungen haben, die voneinander abhängen:

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

Zwischen diesen Abfragen kann ein anderer Benutzer die Tabelle Autos ändern und Verkauft aktualisieren. Um dies zu verhindern, schließen Sie es in eine Transaktion ein:

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

Transaktionen werden von InnoDB unterstützt, aber nicht von MyISAM.