2017-09-11 3 views

答えて

4

Oracleは行レベルのロックを使用します。したがって、異なる状況を見なければなりません。

1.)Webアプリケーションとあなたの仕事は異なる行に影響を与えます:あなたは大丈夫です。

2.)Webアプリケーションとジョブが同じ行に影響し、ロック時間(UPDATEとCOMMITの間の時間)が短くてすみます。 Oracleは実行をシリアライズします。

3.)あなたの仕事またはウェブアプリケーションのいずれかが長時間ロックを保持します。これは注目に値するでしょう:Oracleはトランザクションが完了するのを待つでしょう。この間、仕事やアプリがハングアップしても問題ありません。ロック時間が時間を超えていると、タイムアウトや不便なユーザーに問題が発生する可能性があります。

4.あなたの仕事とあなたのアプリは複数の行を更新し、これらの行のロックを長時間保持し、ジョブとアプリは同じ行に影響します。これは危険です。あなたのジョブが行Aのロックを保持していて行Bを更新しようとしていて、アプリケーションが行Bのロックを保持していて行Aを更新しようとしているため、デッドロックが発生する可能性があります。 2つのセッション - 仕事かアプリか。これは非常に難しいです。なぜなら、再現と分析が非常に難しいからです。

実際にどのような場合に該当するのか自分自身で判断しなければなりません。

関連する問題