、みなさん、良い一日を!
アプリケーションで複数のデータベースを使用する必要がありました。春の構成ファイルでは、2 つのデータ ソースをそれぞれ別のデータベースに構成します。
<bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">someproperties here<bean/>
<bean id="myDataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">someproperties here<bean/>
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="myDataSource" />
<bean id="mySessionFactory2" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource2" ref="myDataSource2" />
そこで、すべてのデータソースを構成してから、Spring アプリケーションのコンテキストの読み込みを確認する簡単なテストを作成しました。そのテストを開始すると、非常に長い時間 (110 秒) 実行されます。ログを見ると、プールが 4 回初期化されていることがわかります。
INFO: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [parameters...
データソースを削除しようとしました - 現在、ログ ファイルに 2 つのプールの初期化があり、最初の初期化には 4 ~ 6 秒かかり、2 番目の初期化には約 30 ~ 32 秒かかりました...
誰かが私にそのパフォーマンスの問題を解決する方法を教えてもらえますか?
PS Mysql db 5.1、c3p0 バージョン 0.9.1.2 (0.9.2 も試しました)、Spring 3.0.4、Hibernate 3.6
編集: 私のテストでは、アプリケーション コンテキストが 2 回開始されたことがわかりました。そのため、プールが 2 回ではなく 4 回初期化されたのはそのためだと思いますが、それでも最初のデータソースのプールが 8 秒で初期化されるため、パフォーマンスの問題があります。しかし、2番目のデータソースの初期化時間のプールは30〜32秒です...