MySQLのトランザクションについてのメモ。
後でまとめる。
◆REPEATABLE READ
ファントムリード
スナップショットを保持している場合、発生しない。
スナップショットを保持していない場合、発生する。
ファジーリード
スナップショットを保持している場合、発生しない。
スナップショットを保持していない場合、発生する。
◆READ COMMITTED
ファントムリード
発生する。
ファジーリード
発生する。
スナップショットを保持しない。
MySQLは「REPEATABLE READ」の場合、
「START TRANSACTION;」時点でトランザクションが開始されるわけではなく、
最初のSELECTでトランザクションが開始される。
利点でもあり、欠点でもある。
ファントムリードは追加レコードを参照してしまうこと。
ファジーリードは更新レコードの値を参照してしまうこと。