こんにちは。アルダグラムでエンジニアしている森下霞です。 弊社では、MySQL のデータベース と Ruby on Rails を使用しています。 先日、モニタリングで UPDATE IN SELECT のクエリでデッドロックの発生に気づき、調査し、修正ができたため、デッドロックのデバッグ方法と解決策を紹介したいと思います。 背景 今回の問題は、アニメサービスを例に使って説明します。アニメは以下のテーブルで保存します。 CREATE TABLE anime ( id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, title VARCHAR(255) NOT NULL, genre VARCHAR(100) NOT NULL, sort_order INT NOT NULL DEFAULT 0 ); CREATE INDEX index_anime_on_