たとえば、To Do リストなど、2 人の異なるユーザーがリストを更新できる Web アプリケーションを作成しています。高い競合は想定していないので、楽観的なロック メカニズムが最適に機能することに気付きました。
私はトランザクション分離レベルを見ていましたが、今は少し混乱しています。異なるトランザクション分離レベルでも同様の問題が解決されるようです。
これらの 2 つの異なる概念は互いにどのように関連していますか? できれば簡単な例で。
たとえば、To Do リストなど、2 人の異なるユーザーがリストを更新できる Web アプリケーションを作成しています。高い競合は想定していないので、楽観的なロック メカニズムが最適に機能することに気付きました。
私はトランザクション分離レベルを見ていましたが、今は少し混乱しています。異なるトランザクション分離レベルでも同様の問題が解決されるようです。
これらの 2 つの異なる概念は互いにどのように関連していますか? できれば簡単な例で。
ロック メカニズムは通常、トランザクションの分離レベルを実装するために使用されます。したがって、トランザクション分離レベルは、トランザクションが同時実行でどのように動作する必要があるかを定義します。ロック メカニズムは実装の詳細です。
アプリケーション作成の観点からは、適切なトランザクション分離レベルの設定に集中する必要があります。もちろん、特定の分離レベルを設定するとロックが発生しますが、アプリケーションに大きな負荷がかからない限り、それほど気にする必要はありません。
重要なことは、データベース エンジン間でロック メカニズムが異なることです。1 つのデータベース用にアプリケーションを作成し、しばらくしてから db エンジンを変更すると、アプリケーションの動作が異なるか、アプリケーションの一部を書き直す必要がある場合があります。
15 年間のビジネス アプリケーション開発から得た私のアドバイスは、明示的なロックに依存しないことです。