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

Hvordan man forårsager dødvande på MySQL

Der er talrige indlæg til dette ved at bruge to sessioner.

https://dba.stackexchange.com/questions/309/code -at-simulere-deadlock

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

Metode kopieret fra den anden artikel ovenfor

Først skal du vælge et ubrugt tabelnavn. Jeg bruger test.innodb_deadlock_maker. Her er de sætninger, du skal udføre:

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

Nu er tabellen og dens data sat op. Udfør derefter følgende på to forskellige forbindelser:

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

-- forbindelse 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. Bulk-indsæt med mysql2 og NodeJs kaster 500

  2. MySql Sådan indstilles en lokal variabel i en opdateringssætning (syntaks?)

  3. MariaDB CURRENT_DATE() Forklaret

  4. sqlalchemy, indstiller MySQL-tegnsæt som `create_engine`-argument