MySQLでリピータブルリードを実現する方法
read committedを実現するための2通りの方法として挙げられる
- トランザクション分離レベルを「使用可繰り返し読み込み」に設定:MySQLでは、トランザクション分離レベルを設定することで異なる同時実行制御を実現できます。デフォルトの分離レベルは「使用可繰り返し読み込み」で、トランザクション中に読み取るデータは一貫性を保ち、他のトランザクションの影響を受けません。トランザクション分離レベルは、次のステートメントで設定できます。
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
- 排他ロック(Exclusive Locks)を使用して、データを読み取る必要がある場合、排他ロックを使用してデータをロックし、他のトランザクションによるデータの変更を防ぐ。以下の文を使用してデータをロックできます。
SELECT * FROM table_name FOR UPDATE;
どちらの方法も、更新可能な読み込みを実現できますが、トランザクションの分離レベルを使用したほうが手軽です。ロックとアンロックの処理が自動的に行われるからです。