フィールド更新の増加による MySQL データベースの競合状態の回避
複数の接続が同じレコードを更新しようとする MySQL データベースの競合状態を防ぐには、特に「tries」などのフィールドの増加が含まれる場合、適切な手段を実装することが不可欠です。
効果的な解決策の 1 つは、アトミック更新を採用することです。 MySQL の update ステートメントを WHERE 句とともに使用すると、アトミックな操作が可能になります。例:
このステートメントは、インクリメント操作がアトミックに発生することを保証し、競合状態のリスクを排除します。
あるいは、行ロックを利用することもできます。 MyISAM テーブルの代わりに InnoDB テーブルを利用することで、更新中に行をロックすることが可能になります。次のクエリは、このアプローチを示しています。
このアプローチでは、更新の処理中に他のクエリが行にアクセスするのを防ぎ、最新の値が返されることが保証されます。
別の方法では、バージョンスキーム。テーブルにバージョン列を追加することで、クエリを次のように構築できます。
このアプローチにより、保存されているバージョンがクエリの開始時に取得されたバージョンと一致する場合にのみ更新が成功します。更新が失敗した場合は、別の接続によってテーブルが変更されたことを示しており、クエリを再実行する必要があります。
以上がMySQL データベースでフィールドをインクリメントするときに競合状態を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。