着信メッセージをUDPでリッスンするアプリケーションを作成しています。私のメインスレッドは、ネットワークからメッセージを次々と受信し、エグゼキュータを使用して処理するために、それぞれを新しいスレッドに渡します。
各処理スレッドは、担当するメッセージに対して必要な処理を実行し、LinkedBlockingQueue
すべての処理スレッド間で共有されるメッセージに追加します。
次に、10000メッセージのブロックごとにキューを排出し、メッセージのブロックをDBに挿入するDBワーカースレッドがあります。
LOAD DATA INFILE
メッセージの到着率が高い(1秒あたりのメッセージ数が20000以上)可能性があるので、使用する方が効率的だと思いました。したがって、このDBワーカースレッドは前述のようにキューを排出し、CSV形式を使用してすべてのメッセージを含む一時ファイルを作成し、作成されたファイルを別のエグゼキューターを使用して別のスレッドに渡します。この新しいスレッドは、LOAD DATA INFILE
を使用してステートメントを実行しJDBC
ます。
アプリケーションをテストした後、パフォーマンスはそれほど良くないと思います。マルチスレッドレベルとDBアクセスレベルの両方でパフォーマンスを向上させる方法を探しています。
MySQLをDBMSとして使用していることを正確に示しています。
ありがとう