Mysql
 sql >> Database >  >> RDS >> Mysql

Come causare deadlock su MySQL

Ci sono numerosi post per questo utilizzando due sessioni.

https://dba.stackexchange.com/questions/309/code -per-simulare-deadlock

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

Metodo copiato dal secondo articolo sopra

Innanzitutto, scegli un nome di tabella non utilizzato. Userò test.innodb_deadlock_maker. Ecco le istruzioni che devi eseguire:

create table test.innodb_deadlock_maker(a int primary key) engine=innodb;
insert into test.innodb_deadlock_maker(a) values(0), (1);

Ora la tabella e i suoi dati sono impostati. Quindi, esegui quanto segue su due diverse connessioni:

-- connessione 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;

-- collegamento 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;