ISOLATION LEVEL

READ UNCOMMITTED

他トランザクションのコミット前の行を読み取ることができる。

コミット前のデータを読んでしまうので、処理がコミットされずにロールバックされると、間違ったデータを読み込んだまま処理が進んでしまう。(ダーティリード)

READ COMMITTED

コミットされたデータのみを読み取る。MySqlのデフォルト設定はこれになっている。

一度読み込んで、もう一度読み込む間のタイミングで、更新とコミットが行われればデータが変わっている。(ノンリピータブルリード、ファジーリード)

REPEATABLE READ

繰り返し同じデータを読み取っても、同じ内容であることを保証する。

一度読み込んで、もう一度読み込むタイミングで、他のトランザクションによってデータが追加された場合、データが増えてしまうことがある(ファントムリード)

SIRIALIZABLE

他のトランザクションの影響を受けずに1つずつ実行したのと同じ結果を保証する。

ダーティリード、ノンリピータブルリード、ファントムリードは発生しない。