ホームページ >データベース >mysql チュートリアル >MySQL でオプティミスティック ロックを実装するにはどうすればよいですか?
オプティミスティック ロックは、複数のユーザーが同じデータを同時に更新することを防ぐために同時実行制御で使用される手法です。競合が発生すると想定し、トランザクションの開始時にデータをロックする悲観的ロックとは異なり、楽観的ロックは競合がまれであることを前提としており、ロックなしで更新を許可します。
MySQL では、楽観的ロックをネイティブに実装していません。ただし、標準 SQL 命令とバージョン列アプローチを使用して実装できます。
<code class="sql">CREATE TABLE theTable ( id INT NOT NULL AUTO_INCREMENT, val1 INT NOT NULL, val2 INT NOT NULL, version INT NOT NULL DEFAULT 0 );</code>
オプティミスティック ロック クエリ:
<code class="sql">UPDATE theTable SET val1 = @newVal1, val2 = @newVal2, version = version + 1 WHERE id = @id AND version = @oldVersion;</code>
競合のチェック:
更新後、AffectedRows 値がチェックされます:
トランザクション分離レベルは、楽観的ロックで役割を果たします。 READ_COMMITTED 分離レベルでは、他のプロセスはコミットされていない更新を読み取ることができないため、競合の発生が防止されます。
を使用する オプティミスティック ロックは、更新頻度が低く、競合の可能性が低い状況に適しています。これは、ユーザー セッションが短いと同時更新の可能性が低くなる Web アプリケーションでよく使用されます。
以上がMySQL でオプティミスティック ロックを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。