300万レコードのデータベーステーブルがあります。Javaスレッドは、テーブルから10,000レコードを読み取り、それを処理します。処理後、次の10,000にジャンプします。スピードアップするために、同じタスク(読み取り+処理)を実行する25のスレッドがあり、次に同じJavaプログラムを実行する4つの物理サーバーがあります。つまり、事実上、100個のスレッドが同じ作業(読み取り+処理)を実行しています。
私が使用した戦略は、次の10,000レコードを取得し、それらを特定のスレッドによって処理されているものとしてマークする作業を行うSQLプロシージャを使用することです。ただし、スレッドがプロシージャを呼び出して応答を返すのをしばらく待っているように見えることに気付きました。このデータ選択プロセスをスピードアップするために使用できる他の戦略。
私のデータベースサーバーはmysqlで、プログラミング言語はjavaです。