(MySQL)トランザクション隔離レベルの設定

備忘録的メモ。

用語

    • Dirty Reads(ダーティリード): 他のトランザクションが更新・挿入したコミットしていないデータを読み込んでしまうこと。
    • Non-Repeatable Reads(反復不能読み取り): トランザクションが2度同じテーブルを読み込む際、その間に他のトランザクションがデータ更新・コミットすると、1度目と2度目の読み取りデータが異なってしまうこと。
    • Phantom Reads(ファントムリード): トランザクションが2度同じテーブルを読み込む際、その間に他のトランザクションがデータを挿入・コミットすると、1度目と2度目の検査結果が異なってしまうこと。

トランザクション隔離レベル

隔離レベル Dirty Reads Non-Repeatable Reads Phantom Reads transaction-isolation
READ UNCOMMITTED READ-UNCOMMITTED
READ COMMITTED READ-COMMITTED
REPEATABLE READ 有(無) REPEATABLE-READ
SERIALIZABLE SERIALIZABLE

MySQLのデフォルトレベルは、"REPEATABLE READ"です。
MySQLの"REPEATABLE READ"はPhantom Readsが発生しないらしいので、特別な理由がない限りデフォルトで問題ないと思います。


http://dev.mysql.com/doc/refman/5.1/ja/innodb-transaction-isolation.html