1

質問の1ºparte:

私のアプリケーションはTCPソケットから大量のデータを受信して​​おり、そのデータをMySQLデータベースに保存する必要があります。これで、DBにクエリを実行するたびに新しい接続を作成し、クエリの後で接続を閉じます。

データを受信して​​データベースに格納するスレッドは1つだけですが、データベースをクエリしている他のスレッドがあります(新しい接続も作成します)が、それらのスレッドは低速です(クエリはより複雑です)。問題は:

  • データを受信して​​保存するためのスレッドだけがある場合、データは比較的高速に保存されます(より高速になる可能性があると思います)。
  • クエリが遅いスレッドもあると、ストレージが遅くなりすぎます...

接続がブロックされている可能性はありますか?(DBにアクセスするたびに接続を作成して閉じています)。

質問の2ºパート:

上記の問題を解決するための私の調査では、データベースへのアクセス時間を改善できるため、接続プールを使用する必要があることがわかりました。

だから私はそれを実装する5つの可能性を見つけました:

  1. http://commons.apache.org/dbcp/
  2. http://www.mchange.com/projects/c3p0/
  3. http://www.javamex.com/tutorials/synchronization_concurrency_semaphore2.shtml
  4. http://www.snaq.net/java/DBPool/
  5. http://www.roseindia.net/tutorial/java/jdbc/jdbcconnectionpooling.html

それぞれをテストする時間がないので、(あなたの意見では)どれがより良いパフォーマンスを示し、解決すべき問題が少ないか知りたいです...(私はWebのどこかでdbcpより多くの問題を引き起こす可能性があるのを見ましたそれらを解決する代わりに...)

4

1 に答える 1

1

クエリや取得または挿入するデータの量によっては、パフォーマンスに一定の影響があり、全体的なパフォーマンスが低下する場合があります。

何よりもまずクエリ/DBを最適化する必要があると思います。

接続プールに関しては、BoneCPを使用しましたが、非常に優れていて高速であることがわかりました。

于 2013-01-14T15:29:28.183 に答える