sql >> Databasteknik >  >> RDS >> Mysql

Hur man orsakar dödläge på MySQL

Det finns många inlägg för detta genom att använda två sessioner.

https://dba.stackexchange.com/questions/309/code -att-simulera-deadlock

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

Metod kopierad från den andra artikeln ovan

Välj först ett oanvänt tabellnamn. Jag använder test.innodb_deadlock_maker. Här är satserna du behöver för att köra:

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

Nu är tabellen och dess data inställda. Utför sedan följande på två olika anslutningar:

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

-- anslutning 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. Hur laddar man upp en bild till localhost-servern medan sökvägen är lagrad i mysql-databasen?

  2. Hur man konverterar mysql till sqlite3 med PHP

  3. Hur aktiverar jag MySQL-frågelogg?

  4. Autentiseringsplugin 'caching_sha2_password' stöds inte