sql >> Database >  >> RDS >> Mysql

Hoe een impasse op MySQL te veroorzaken?

Er zijn talloze posts hiervoor door gebruik te maken van twee sessies.

https://dba.stackexchange.com/questions/309/code -om-deadlock te simuleren

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

Methode gekopieerd uit het tweede artikel hierboven

Kies eerst een ongebruikte tabelnaam. Ik gebruik test.innodb_deadlock_maker. Dit zijn de instructies die u moet uitvoeren:

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

Nu zijn de tabel en de bijbehorende gegevens ingesteld. Voer vervolgens het volgende uit op twee verschillende verbindingen:

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

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


  1. NameError:naam '_mysql' is niet gedefinieerd na wijziging in mysql

  2. Null vervangen op basis van een voorwaarde

  3. Wijzigingsmelding Oracle Database

  4. willekeurige getallen in java