java - for循环效率问题
巴扎黑
巴扎黑 2017-04-17 17:50:58
0
4
488

for循环,大概需要遍历100万的数据,对于每一条数据,需要更新5张表,调用两次API接口,但是在执行过程中,因为数据量太大,所以执行的中间,由于耗时严重,经常会出现链接中断等问题,如果把这种遍历100万数据的逻辑,搞成多线程,应该怎么搞啊?

巴扎黑
巴扎黑

全員に返信(4)
黄舟

スレッド プールまたは分散処理を使用します。特定のデータが処理された場合は、それをどこかにマークして、失敗した場合は最初からやり直して、完了したデータを除外できます。

タイムアウトを設定し、失敗したレコードを個別に保存し、戦略を使用して再試行することもできます。

いいねを押す +0
PHPzhong

あなたの声を聞いて、このプログラムを長時間使用するのではなく、この 100 万のデータを一度に処理したいだけなら、単純かつ無作法にさらにいくつかのプロセスを開いて、いくつかのパラメータを渡す必要があります。 10 個のプロセスが開かれ、各プロセスが 100,000 個のデータを担当し、各プロセスが担当するデータは特定のルールに従って区別できるとします。例: ID 間隔

いいねを押す +0
大家讲道理

100 万のデータを複数の部分に分割し、各スレッドで 1 つのデータを処理し、データをバッチで挿入する必要があります。データベースにインデックスがある場合は、すべてのデータが挿入された後、最初にインデックスをオフにすることをお勧めします。 Oracle の場合は、Hibernate などを使用せずに、SQL Loader などのツールを使用して直接挿入できます。

いいねを押す +0
刘奇

スレッド プールを使用して各スレッドのデータの開始点を記録し、その後データの読み取りを開始します。テーブルの更新にはバッチ更新を使用することをお勧めします。API インターフェイスは非同期で呼び出され、呼び出し中にテーブルが更新されます。 。この手順はもっと複雑だと思われる場合。 APIインターフェースで呼び出されるデータベースの更新テーブルを使用して逐次実行されます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート