Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment provoquer un blocage sur MySQL

Il existe de nombreux messages pour cela en utilisant deux sessions.

https://dba.stackexchange.com/questions/309/code -to-simulate-deadlock

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

Méthode copiée du deuxième article ci-dessus

Tout d'abord, choisissez un nom de table inutilisé. Je vais utiliser test.innodb_deadlock_maker. Voici les instructions que vous devez exécuter :

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

Maintenant, la table et ses données sont configurées. Ensuite, exécutez ce qui suit sur deux connexions différentes :

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

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