3

私は接続プーリングライブラリにまったく慣れていません。私はちょうどこのブログ記事でそれを発見しました)、grails/hibernate/mysql に基づく Web アプリケーションで使用する必要があるかどうかわかりません。

私の質問は簡単です。どのような状況で接続プール ライブラリを grails アプリケーションに統合することをお勧めしますか? 常に、まったくしない、または一部の接続しきい値を超えるだけですか?

PS : Web アプリケーションで C3P0 をうまく使用したことがある場合は、(目に見えるプラスの効果に関して) フィードバックをお待ちしております。

4

4 に答える 4

2

私が常に接続プールを使用する理由は 2 つあります。

  1. 接続を開くのはコストのかかる操作であるため
  2. 透過的に動作するように設定するのは非常に簡単なので、使用しないことには何のメリットもありません。

すでに hibernate を使用している場合は、hibernate.cfg.xml のconnection.provider_classを変更してorg.hibernate.connection.C3P0ConnectionProviderを使用し、c3p0 jar ファイルをサーブレットの WEB-INF/lib フォルダーにスローします。終わり。

JNDI と GlobalNamingResources 宣言を使用している場合は、typeプロパティを変更して com.mchange.v2.c3p0.ComboPooledDataSource をポイントし c3p0 jar を Tomcat の /lib フォルダーにスローします。終わり。

于 2010-05-11T20:43:40.550 に答える
2

どのプーリングの実装に関係なく、Web アプリケーションでは常に接続プールを使用する必要があります。データベースとの接続を開くことは非常にコストのかかる作業であり、既存のアイドル状態の接続を再利用できると、サイトのパフォーマンスが大幅に向上します。

接続は、アプリケーション サーバー (Tomcat、JBoss、Glassfish...) またはアプリケーションによって管理できます。後者はセットアップが簡単ですが、展開ごとにカスタマイズするのは困難です。アプリケーションで接続プールを構成し、それを使用するようにサイトを設定すると、開いたままにする最小接続数、最大アイドル時間などの接続プール パラメータを簡単に微調整できます。

于 2010-05-10T20:39:23.850 に答える
2

これに関する私の経験はかなり限られていますが、Hibernate が MySQL の再起動を処理していないように見えるという単純な理由で、C3P0 を使用することになりました。ホスティングサービスが毎晩MySQLを再起動したため、毎朝「パイプの破損」が発生しました。

私はそれをグーグルで調べましたが、私が見つけた唯一のアドバイスは、アプリサーバーまたはC3P0の接続プールを使用することでした。私にとって、後者はうまく機能します。

于 2010-05-10T20:30:35.497 に答える
0

C3P0は非常に適切なプールですが、アプリサーバーまたはサーブレットエンジンの接続プールを使用し、通常のデータソースを介して使用するようにGrailsを構成することをお勧めします。それができない場合は、スタンドアロンの接続プールを使用します(この場合、C3P0が適切な選択です)。

于 2010-05-10T15:01:51.127 に答える