Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Simultaneidade do MySQL, como funciona e preciso lidar com isso no meu aplicativo


As instruções SQL são atômicas. Ou seja, se você executar algo assim:
UPDATE Cars SET Sold = Sold + 1

Ninguém pode alterar o Sold variável durante esta declaração. Ele sempre é incrementado em 1, mesmo se alguém estiver executando a mesma instrução simultaneamente.

O problema ocorre se você tiver instruções que dependem umas das outras:
a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;

Entre essas consultas, outro usuário pode alterar a tabela Carros e atualizar Vendidos. Para evitar isso, envolva-o em uma transação:
BEGIN;
a = SELECT Sold FROM Cars;
UPDATE Cars SET Sold = a + 1;
COMMIT;

As transações são suportadas pelo InnoDB, mas não pelo MyISAM.