0

Javaコードがシェルスクリプトから呼び出される場合、接続プールデータベース接続は意味がありますか、それとも個別の接続を使用する方が良いですか?シェルスクリプトを呼び出すたびにjvmが終了し、スクリプトが呼び出されるたびにdb pool / factory / etcが強制的に再作成されませんか?

たとえば、シェルスクリプトを呼び出す外部プロセスがあります。このシェルスクリプトは、呼び出された操作に応じて、1つ以上のDB操作(クエリ、挿入、更新、削除)を実行するJavaクラスを呼び出します。これは、Tomcatのようなサーブレットコンテナを使用しないスタンドアロンのバッチプロセスです。このシェルスクリプトは、外部プロセスによって何度も呼び出されます。

私の環境は、Javaアプリケーション(main()メソッド)を呼び出すbashシェルスクリプトです。これは、Springjdbcとcommons-dbcp1.4を使用してdbの処理とプーリングを行います。

前もって感謝します!

4

3 に答える 3

0

データベースへの呼び出しが非常に多く、接続の初期化にコストがかかる場合は、接続プールの使用を検討する必要があります。

それ以外の場合、実行中のタスクをシリアル化できる(またはシリアル化できる)バッチプロセスの場合、1つの接続で十分です。Spring-JDBCは、テスト用の単一接続の「プール」ファクトリオブジェクトも提供します。これは、同様に機能するはずです(したがって、ボイラーメッキを処理する必要はありません)。

于 2012-04-19T14:06:28.453 に答える
0

あなたの場合、JVMをシャットダウンして再起動するたびに、接続プールを再度作成する必要があると正しく言ったので、接続プールのメリットはおそらく限られています。DataSource接続を直接作成する代わりにインターフェースを使用することで利益を得たい場合は、プールを引き続き使用できます。処理がシングルスレッドで行われる場合は、接続プールのサイズが1だけであることを確認してください。

同じプロセスで複数のスレッドを使用している場合は、接続プールの方がおそらく理にかなっており、その機能の恩恵を受けることができます。

于 2012-04-19T14:08:01.457 に答える
0
  1. データベース接続を開くことは、リソースとパフォーマンス(応答時間)の両方の点で非常にコストがかかります。

  2. 接続プールを使用しない場合は、接続を取得して使用し、閉じます。これは、DBの相互作用が必要になるたびに繰り返されます。

  3. 接続プールは、再利用可能な接続プールを作成することでこれを回避し、毎回接続を作成する時間とリソースを節約します。

  4. サーブレットコンテナを使用するかスタンドアロンアプリケーションを使用するかは関係ありません。これは、アプリケーション(Web /スタンドアロン)がデータベースと対話する方法によって異なります。

  5. アプリケーションにデータベースの同時アクセスを伴う並列操作が多数ある場合は、接続プールを使用すると非常に便利です。

  6. したがって、接続プールの選択と関連性は、Webアプリケーションかスタンドアロンかに関係なく、アプリケーションがDBと対話する方法によって異なります。

于 2012-04-19T14:29:59.053 に答える