Linuxなどのメモ書き

InnoDBでのデッドロック検出


Rev.1を表示中。最新版はこちら

概要

MySQLのInnoDBを使っている場合、トランザクション間でデッドロックが発生した場合は、デッドロックが検出されロールバックが行われるのだが、実際にデッドロックを発生させてみて挙動を確認した。

準備

適当な名前で空のデータベースを作成し、以下のSQLを実行。

-- テスト用テーブル
DROP TABLE IF EXISTS test;
CREATE TABLE test (
        id BIGINT NOT NULL AUTO_INCREMENT UNIQUE,
        data INT NOT NULL) ENGINE = InnoDB;
-- テスト用データ挿入
INSERT INTO test (id, data) VALUES (1, 1000), (2, 2000);

この状態でtestテーブルに以下のようなデータが格納されている。

testテーブルの内容

id data
1
1000
2 2000


デッドロックを発生させてみる

Shellを二つ立ち上げ、それぞれからmysqlコマンドでデータベースに接続し、図xxのような順番でSQLを実行してデッドロックを発生させる。


最終更新 2012/03/17 00:38:15 - kztomita
(2012/03/17 00:38:15 作成)
添付ファイル
timeline.jpg - kztomita


リンク

その他のWiki
Linuxメモ
Xnuメモ

会社
(有)ビットハイブ
受託開発やってます。

よくやる仕事

・Webシステム開発(LAMP環境)
・Linuxサーバー設定関連
サーバー移転作業代行

開発事例にデジタルカタログ/マンガビューワーを追加しました。

draggable.jsのスマホ対応版デモページを追加しました。説明はこちら

検索

Adsense
最近のコメント