sql >> データベース >  >> RDS >> Mysql

MySQLでデッドロックを引き起こす方法

    2つのセッションを使用することで、これに関する多数の投稿があります。

    https://dba.stackexchange.com/questions/309/code -シミュレートする-デッドロック

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

    上記の2番目の記事からコピーした方法

    まず、未使用のテーブル名を選択します。 test.innodb_deadlock_makerを使用します。実行する必要のあるステートメントは次のとおりです。

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

    これで、テーブルとそのデータが設定されました。次に、2つの異なる接続で次を実行します。

    -接続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;
    

    -接続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. 誘惑可能なDBCCステートメントの出力をキャッチする方法

    2. SQLServerのALTERTABLEADDCOLUMNステートメントについて

    3. MariaDBでのSOUNDEX()のしくみ

    4. Postgresの日付形式とそのさまざまな機能の調査