Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie man einen Deadlock bei MySQL verursacht

Dazu gibt es zahlreiche Posts mit zwei Sessions.

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

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

Methode aus dem zweiten Artikel oben kopiert

Wählen Sie zunächst einen unbenutzten Tabellennamen. Ich verwende test.innodb_deadlock_maker. Hier sind die Anweisungen, die Sie ausführen müssen:

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

Nun sind die Tabelle und ihre Daten aufgebaut. Führen Sie als Nächstes Folgendes auf zwei verschiedenen Verbindungen aus:

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

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