私は、Webアプリケーションのユーザ統計を更新しているバックグラウンドジョブを構築しています。ジョブは現在55〜60秒かかりますが、ジョブが実行されていると同時にユーザーが統計ページを読み込もうとするとどうなるか心配です。PostgreSQL + Rails並行性の明確化
2人のクライアントが同じ行(1つの更新と1つの読み込み)にアクセスしようとすると、トランザクションが明示的に開始されていないので、最初のものだけを待つだけです2番目は終了する。
これを正しく理解していると、私が発生する可能性が高いのは、行が更新されるのと同じ瞬間にユーザーが統計ページを読み込もうとする小さな確率であるということです。私がPostgresを明示的に設定しない限り、統計テーブル全体が55〜60秒の仕事の間にロックされているのではないでしょうか?
これは正しい解釈ですか?私が逃している他の要因はありますか?
(私はそれが上記のシナリオ上の任意のベアリングを有する念のレール部分を言及)
(また:PostgreSQLのバージョンが9.0.4である)