悲観ロックと楽観ロックは、データベース管理システム(DBMS)で複数のトランザクションが同時に同じデータにアクセスする場合に使用される競合制御の手法です。
悲観ロックは、トランザクションがデータを読み取るときに、そのデータが他のトランザクションによって変更される可能性があると仮定して、すぐにデータをロックする方法です。つまり、データを読み取りまたは更新する前に、トランザクションはデータに排他的なアクセス権を取得します。この方式は、トランザクションがデータを変更するために必要な時間が長い場合や、トランザクションが同じデータに頻繁にアクセスする場合に効果的ですが、ロックが他のトランザクションのパフォーマンスを低下させる可能性があります。
一方、楽観ロックは、トランザクションがデータを更新しようとする前に、そのデータが他のトランザクションによって変更されていないことを確認します。つまり、トランザクションはデータにアクセスし、データを変更しようとする前に、他のトランザクションがそのデータを変更していないかどうかを確認します。この方式は、ロックが他のトランザクションのパフォーマンスを低下させることがないため、高い並行性を実現することができます。ただし、トランザクションが同時に同じデータにアクセスする回数が多い場合や、データの整合性が重要な場合には、楽観ロックを使用することは適切ではありません。