Sequel gem でQueを使用しています。大量のデータを処理する必要があるジョブを安全に作成できるかどうかに関心があります。1 つのデータベース トランザクションで安全に配置できる量よりも多くのデータ (8 万行以上のインポート/エクスポートなど) を処理する必要があります。定期的に (私は現在、1,000 件のレコード トランザクション バッチでレコードを処理しています)。
私が懸念しているのは、gem/postgres がバックグラウンド ワーカーの実行の周りである種の暗黙的なトランザクションを実行し、ロールバック セグメントが手に負えなくなり、DB がスワッピー地獄でクラッシュする可能性がある場合です。
私がこれを求めている理由は、ドキュメントの次の行です。
安全性 - Ruby プロセスが停止した場合、そのプロセスが動作しているジョブが失われたり、ロックされた状態やあいまいな状態のままになったりすることはありません。他のワーカーがすぐに利用できるようになります。
私と一緒に、これは「トランザクションにネストされた」と叫びます。私の懸念が本当なら、80k レコードを同じロールバック セグメントに静かにラップする可能性があります。ラップトップで試すこともできますが、私のラップトップは本番 VM よりもはるかに強力であるため、開発環境で正常に動作し、デプロイで見事にクラッシュするのではないかと心配しています。
同じような Que の経験を持つ人が助けてくれますか?
リンク: GH に関する同じ質問