2016-08-27 9 views
0

JavaアプリケーションのMYSQLサーバーにデータを送信するためのカスタムWeb APIを作成しました。私のJavaアプリケーションでは、200行を追加/更新する必要があります。すでに、これらのリクエストを1つずつ作成しています。スレッドを使用したAPIサーバーへのJavaの多数の接続

  1. これはかなり時間がかかる可能性があるので、これらの異なる接続のすべての のスレッドを作成できますか?
  2. 同時に最大接続数を制限する必要がありますか?一度に10人いたらどうですか?
  3. これは、mysql の問題がまったく同じ時刻に行を追加する可能性がありますか? (NO 2行は、これまで が単一の時点で変更する必要がないであろう)複数の接続でレコードを挿入

答えて

1

潜在的に200個の挿入をスピードアップしますが、後にのみ、テストおよび測定することによって、確実に知ることができます複数のスレッドを導入する。また、データベースへのラウンドトリップを節約することでパフォーマンスを向上させることができるので、JDBCバッチを試して、200のすべての挿入を一度にデータベースに送信することをお勧めします(実装で可能な場合)。

接続プールを作成するには、JDBC接続プールの実装であるHikariCPを参照してください。これにより、他の設定と一緒に最小/最大同時接続を指定することができます。その後、ワーカースレッドはプールからの接続を要求し、挿入を実行できます。

挿入ごとにテーブルロックを取得すると、複数のレコードを同時に挿入すると、mySQLレベルで問題が発生する可能性があります。その場合、複数のスレッドで速度の向上は得られません。そのためには、データベースレベルでチューニングする必要があります。ここで助けてくれるよい記事があります:High rate insertion with mySQL

関連する問題