目前,我正在使用带有 @Transactional 注释的 DriverManagerDataSource 来管理事务。但所有事务都非常非常慢,可能是因为数据源每次打开和关闭与数据库的连接。
我应该使用什么数据源来加速交易?
我在我的应用程序中结合使用了两种方法。第一个是 c3p0 连接池,它与 chkal 建议的解决方案几乎相同。第二种方法是使用Spring的lazyConnectionDataSourceProxy,它创建延迟加载代理,仅当您访问数据库时才加载连接。当您有二级缓存并且仅读取缓存的数据和查询时,这非常有用 - 数据库不会被命中,并且您不需要获取连接(这是相当昂贵的)。
<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- Pool properties -->
<property name="minPoolSize" value="5" />
<property name="initialPoolSize" value="10" />
<property name="maxPoolSize" value="50" />
<property name="maxStatements" value="50" />
<property name="idleConnectionTestPeriod" value="120" />
<property name="maxIdleTime" value="1200" />
</bean>
<bean name="lazyConnectionDataSourceProxy" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
<property name="targetDataSource" ref="dataSource" />
</bean>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)