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

MySQL INSERT e SELECT Ordem de precedência


Depende se seus users tabela é MyISAM ou InnoDB.

Se for MyISAM, uma instrução ou outra bloqueia a tabela, e há pouco que você possa fazer para controlar isso, exceto bloqueio de tabelas você mesma.

Se for InnoDB, é baseado em transações. A arquitetura de várias versões permite acesso simultâneo à tabela e o SELECT verá a contagem de linhas a partir do instante em que sua transação foi iniciada. Se houver um INSERT acontecendo simultaneamente, o SELECT verá 0 linhas. Na verdade, você pode até ver 0 linhas por um SELECT executado alguns segundos depois, se a transação para o INSERT ainda não se comprometeu.

Não há como as duas transações começarem verdadeiramente simultaneamente. As transações são garantidas para ter alguma ordem.