MySQL でオプティミスティック ロックを実装するにはどうすればよいですか?
Oct 26, 2024 pm 08:39 PM<h2>MySQL のオプティミスティック ロック</h2>
MySQL はネイティブにオプティミスティック ロックをサポートしていませんが、標準 SQL 構造とコード ロジックを通じて実装できます。 .
ロックなしアプローチ:
このアプローチでは、明示的なロックは使用されません。ただし、複数のユーザーが同じデータを同時に更新すると、データの一貫性は保証されません。
SELECT data from theTable WHERE iD = @theId; {code that calculates new values} UPDATE theTable SET val1 = @newVal1, val2 = @newVal2 WHERE iD = @theId;
オプティミスティック ロック アプローチ:
このアプローチには、コミット前の変更のチェックが含まれます。アップデート。変更が発生した場合、通常は行のバージョン管理または等価性チェックによって判断され、更新は拒否されます。
SELECT iD, val1, val2 FROM theTable WHERE iD = @theId; {code that calculates new values} UPDATE theTable SET val1 = @newVal1, val2 = @newVal2 WHERE iD = @theId AND val1 = @oldVal1 AND val2 = @oldVal2; {if AffectedRows == 1 } {go on with your other code} {else} {decide what to do since it has gone bad... in your code} {endif}
バージョニングのオプティミスティック ロック:
オプティミスティック ロックと同様この手法では、バージョン列を使用して変更をチェックします。
SELECT iD, val1, val2, version FROM theTable WHERE iD = @theId; {code that calculates new values} UPDATE theTable SET val1 = @newVal1, val2 = @newVal2, version = version + 1 WHERE iD = @theId AND version = @oldversion; {if AffectedRows == 1 } {go on with your other code} {else} {decide what to do since it has gone bad... in your code} {endif}
トランザクションと分離レベル:
トランザクションは、オプティミスティック ロックと組み合わせて使用して、確実に変更を確認できます。データの一貫性。ただし、トランザクション分離レベルの選択は、オプティミスティック ロックの有効性に影響する可能性があります。
テストと検証:
オプティミスティック ロックが正しく実装されていることを確認するには、次のことをお勧めします。さまざまなシナリオと分離レベルを使用して徹底的なテストと検証を実行します。
以上がMySQL でオプティミスティック ロックを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
