複数の接続が同じレコードを同時に更新しようとすると、競合状態が発生する可能性があります。一般的なシナリオには、「試行数」などのカウンタ フィールドの増加が含まれます。このような状況でデータの整合性を確保するには、競合状態に対処するメカニズムを実装することが重要です。
1.アトミック更新:
MySQL はアトミック更新をサポートしており、更新操作が全体として成功または失敗することを保証します。最初に現在の値を選択する必要がなく、フィールドを直接更新するだけで十分な場合は、この方法をお勧めします。
2.行ロック:
この手法では、行レベルのロックを使用して、同じ行に対する複数の同時更新を防ぎます。排他ロックを取得すると、1 つの接続は行を排他的に変更できますが、他の接続はロックが解放されるまで待機する必要があります。これにより、フィールドが正しく更新され、競合状態が回避されます。
3.バージョン スキーム:
このアプローチでは、テーブルにバージョン列が導入されます。行を更新する場合、既存のバージョンが取得され、バージョンが一致する場合に更新が実行されます。バージョンが変更されている場合は、最初の取得以降に別の接続によって行が変更されたことを示します。この場合、更新は中止されるため、プロセスを繰り返して最新の値を取得し、更新を再試行する必要があります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3