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

Como causar deadlock no MySQL


Existem vários posts para isso usando duas sessões.

https://dba.stackexchange.com/questions/309/code -para-simular-deadlock

http://www.xaprb.com/blog/2006/08/08/how-to-deliberately-cause-a-deadlock-in-mysql/

Método copiado do segundo artigo acima

Primeiro, escolha um nome de tabela não utilizado. Vou usar test.innodb_deadlock_maker. Aqui estão as instruções que você precisa executar:
create table test.innodb_deadlock_maker(a int primary key) engine=innodb;
insert into test.innodb_deadlock_maker(a) values(0), (1);

Agora a tabela e seus dados estão configurados. Em seguida, execute o seguinte em duas conexões diferentes:

-- conexão 0
set transaction isolation level serializable;
start transaction;
select * from test.innodb_deadlock_maker where a = 0;
update test.innodb_deadlock_maker set a = 0 where a <> 0;

-- conexão 1
set transaction isolation level serializable;
start transaction;
select * from test.innodb_deadlock_maker where a = 1;
update test.innodb_deadlock_maker set a = 1 where a <> 1;