2017-03-22 7 views
0

複数のサーバーが同じデータをオプティミスティック・ロックでアクセスすると、複数のサーバーが同じデータベースを使用します.Sever A、サーバーBはバージョン1のデータを取得し、同時にバージョン2オプティミスティック・ロックは複数のアプリケーションで機能しますか?複数のアプリケーションに対してオプティミスティック・ロックが機能する

答えて

0

実際にオプティミスティックロックを使用している場合はもちろん、複数のアプリケーションで動作します。これがオプティミスティックロックの要点です。単一のアプリケーションでそれらを本当に必要としません。

しかし、「壊れないことを望みましょう」だけでなく、楽観的なロックである必要があります。つまり、行の更新はで、常ににすると新しいバージョン番号になります。 AとBが更新しようとすると、実際に通過する最初のバージョンは古いバージョンが増えます。つまり、もう一方が一致するバージョンを持たなくなり、オプティミスティックな同時実行が失敗します。

+0

AとBが同時にコミットするとき、データベースは楽観的ですから、コミットを拒否しません。コミットを拒否する能力は、アプリケーション自体によって制御されます。複数のアプリケーションに対して、アプリケーションはBコミットを停止できません。 – jr1990

+0

@ jr1990あなたは本当にあなたのコードを質問に含めるべきです。実際に楽観的な並行性を正しく実装していないようです。要点は、DBが両方のコミットを受け入れることではなく、むしろそれはむしろ役に立たないということです。同じ行の更新はシリアル化されなければならず、後で提供される更新は失敗します(通常、行のバージョンが変更されているため、更新を行わないだけです)。アプリケーションは競合を解決する必要がありますが、DBは競合するストアを成功させるものであってはなりません。 – Luaan

関連する問題