2

,今天是个好日子!

我需要在应用程序中使用多个数据库。在 spring 配置文件中,我为单独的数据库配置了两个数据源。

<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 秒,第二次大约需要 30-32...

有人可以给我一个提示,我该如何解决这个性能问题?

PS Mysql db 5.1,c3p0 版本 0.9.1.2(我也试过 0.9.2),Spring 3.0.4,Hibernate 3.6

编辑:我发现在我的测试中 - 应用程序上下文启动了 2 次,所以我建议这就是池被初始化 4 次而不是 2 次的原因,但我仍然有一个性能问题池,第一个数据源在 8 秒内初始化,但是第二个数据源初始化时间的池是 30-32 秒...

4

0 回答 0