0

私は、保存する前に追加する情報を見つけるために、作成時に外部WebサービスにHTTPリクエストを送信するモデルを持っています。トランザクション内のHTTPリクエスト?

現在、私はbefore_createコールバックでこれをやっています。私は最近、コールバックの前/後にhappen within database transactionsを学びました。

私はこのようにしてDBスループットを制限するなどの問題にまで自分自身を開放していますか? httpリクエストを送信する前にレコードをコミットし、レコードが返ってきたらレコードを更新する方が良いでしょうか?

答えて

1

トランザクションを開いたままにしておくと、取得したすべてのロックがアクティブになります。長期間にわたり停止する可能性のある外部ソースへの呼び出しがある場合は、同じトランザクション内で関連のないロックを持たないようにしてください。

他の言葉で言えば、同じトランザクションに何も入れないでください。

追加情報を調べる前に新しい行が表示されても構わない場合は、その行をコミットして後で更新するだけです。

また、トランザクションを開始する前に外部Webサービスから情報を取得します。それはデータベースの最もクリーンな/最速の解決策になります。

PostgreSQL lock types
How to view locks

関連する問題