2

行のコレクションが挿入された後、非同期で実行され、非ブロックであり、要求の発信者に結果を通知する必要がない操作を開始することが可能かどうか疑問に思っています。

私は大量のイベントを扱っており、挿入後のロジックが失敗しないことを保証できます。イベント ソースに挿入スレッドを 1 つだけ用意し、このスレッドをブロックせずに飛ばし続けたいと考えています。配達後の簿記については責任を負いません。

これらのジョブを 100 個同時に実行する可能性があり、各ジョブが 5 つのテーブルで動作し、これらのテーブルのそれぞれに 200 ~ 1000 回の挿入があると言えます。

正しい方向へのヒントで十分です。

4

3 に答える 3

3

LISTEN / NOTIFYが必要な場合があり、別の接続のリスナーにLISTEN notifynameを実行させ(ノンブロッキングソケットを使用してpollを使用できるか、アプリケーションが機能している場合でも)、コードは処理後にNOTIFYnotifynameを実行します、ただし、LISTENingスレッドが、おそらく何らかのログテーブルを使用して、どのレコードが完了したかを知るための何らかの方法が必要になります。また、libpqが非同期モードをサポートしていることも注目に値します(少なくとも、DBD :: Pg、おそらく他のPgドライバーでもサポートされています)。

于 2010-03-09T15:57:02.160 に答える
-1

実際には単に大量の行をバッチ処理しているだけなので、処理が終わったら cron ジョブで行を後処理してみませんか?

それらを未処理としてマークし (またはトリガーを使用して処理テーブルにリダイレクトし)、完了したら一度にすべて処理します。

于 2010-03-06T14:30:01.063 に答える