0

私はスレッド化が初めてで、Java の知識がほとんどありません。mysql へ のデータ挿入で重大なパフォーマンスの問題に直面しています。データは巨大なチャンクであり、バッチの準備済みステートメントを使用した場合でも、膨大な時間がかかります。

ハッシュテーブルからキーと値を読み取り、スレッドを使用して mysql テーブルに挿入される特定の say-5 インデックスを分割したいと考えています。これは私のパフォーマンスを向上させると思います。100 個のインデックスがあるとします。そのため、5 つのスレッドを作成し、それぞれがデータベースに 20 個の値を挿入したいと考えています。スレッド配列を作成し、エグゼキューター プールに渡して送信することはできますが、その後の進め方に行き詰まっています。

次の疑問があります: スレッドが挿入された量を追跡するにはどうすればよいですか、またはスレッドを 20 挿入に制限するにはどうすればよいですか? スレッドごとに 20 個の挿入作業をさらに 4 個のバッチに分割することはできますか?

私はコードを探しているのではなく、役立つかもしれない正しいガイダンスを探しています。

4

1 に答える 1

0

個人的には、ExecutorAPIを使用します。

基本的には、プールされた固定のエグゼキューターを作成し、実行したいタスクを単純にサブミットし、既存のスレッドが利用可能になったときにタスクのプールを管理できるようにします。

詳細については、Executors のチュートリアルをご覧ください。

于 2013-09-16T03:41:01.090 に答える