MySQL 行ロックを実装する方法は何ですか?
MySQLの行ロック実装には、読み取りロックと排他書込みの2つの方式があります。
- 共有ロック(共有ロック時):あるトランザクションがSELECT文を実行し、LOCK IN SHARE MODEまたはFOR SHARE句を使用した場合、読み取った行に対してロックを実施する。他のトランザクションもその行を読み取れるが、ロックが開放されるまで変更することはできない。
- 排他ロック(Exclusive Lock):UPDATE、DELETE、またはINSERT文を実行してFOR UPDATE句を指定した場合、更新対象となる行に排他ロックがかかります。他のトランザクションはそのトランザクションがロックを解除するまで、その行の読み取り、更新、削除ができません。
2種類の行ロック実装を使用することで、並列トランザクションによるデータベース内のデータへのアクセスや変更を効率よく制御し、データの整合性と完全性を確保できます。