InnoDBで行ロック/テーブルロックになる条件

blog.livedoor.jp

  • ユニーク制約 or インデックス が貼られているカラムで検索した場合、行ロック
  • それ以外 のカラムで検索した場合、テーブルロック
  • インデックスの値によってロックされる=SCANされた行はすべてロックされる

qiita.com

  • ロックには 排他ロック 共有ロック の2種類がある。

共有 (S) ロックでは、ロックを保持するトランザクションによる行の読み取りが許可されます。

排他 (X) ロックでは、ロックを保持するトランザクションによる行の更新または削除が許可されます。

MySQL :: MySQL 5.6 リファレンスマニュアル :: 14.2.3 InnoDB のロックモード

そもそも、トランザクションの中で使うこと。

IN SHARE MODEFOR UPDATE 読み取りによって設定されたロックは、トランザクションがコミットされたりロールバックされたりした時にリリースされます。