曖昧に理解してるかもと思い、自分の振り返りのために書いてます。 先日書いた記事で作ったデータで説明します。 MySQLのロック 通常、DML実行時に取得されるロックは排他ロックと共有ロックで構成されます。 最初にトランザクションでロックをかけたほうが排他ロック、 ロックがかかったデータを参照だけするためにかけたほうが共有ロックと呼ばれます。 共有ロックがかかった状態では他のトランザクションでも共有ロックはかかり(データの読み取りができ)ますが、データの書き込みはできません。 一方、他のトランザクションが同じ行をロックするのを回避するタイプのロックを排他ロックといいます。 トランザクション分離レベルに応じて、 他のトランザクションが同じ行に書き込むのをブロックできる 他のトランザクションが同じ行を読み取るのをブロックできる となります。 MySQLで書き込み中データ読み取れると思ったでしょ?