【发布时间】:2011-12-29 03:46:16
【问题描述】:
我使用DriverManagerDataSource 进行本地开发。我目前正在使用org.apache.commons.dbcp.BasicDataSource,因为正在创建的连接太多。
关于在连接池方面为客户在生产环境中设置数据库的最佳方式,有人有什么建议吗?
【问题讨论】:
标签: spring datasource connection-pooling
我使用DriverManagerDataSource 进行本地开发。我目前正在使用org.apache.commons.dbcp.BasicDataSource,因为正在创建的连接太多。
关于在连接池方面为客户在生产环境中设置数据库的最佳方式,有人有什么建议吗?
【问题讨论】:
标签: spring datasource connection-pooling
我通常倾向于选择C3P0。对我来说总是很好。由于 C3P0 在性能和功能方面一直“足够好”,因此实际上没有进行任何更深入的分析或比较。
【讨论】:
是的,我强烈建议将池数据源用于生产就绪型应用程序。
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
DriverManagerDataSource 或 Single-ConnectionDataSource 提供连接池,没有要设置的池配置属性。
虽然SingleConnectionDataSource 和DriverManagerDataSource 很棒
对于小型应用程序并在开发中运行,您应该认真考虑在生产应用程序中使用任何一种的含义。因为SingleConnection-DataSource 有一个且只有一个数据库连接可供使用,所以它在多线程应用程序中效果不佳。同时,即使DriverManager-DataSource 能够支持多线程,每次请求连接时创建新连接都会产生性能成本。由于这些限制,我强烈建议使用池数据源。
我已经展示了示例池化数据源配置
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<propertyname="driverClassName"value="org.hsqldb.jdbcDriver"/>
<propertyname="url" value="jdbc:hsqldb:hsql://localhost/test"/>
<propertyname="username"value="sa"/>
<propertyname="password"value=""/>
<propertyname="initialSize"value="5"/>
<propertyname="maxActive"value="10"/>
</bean>
【讨论】: