我在我的項目中使用Spring並實例化dataSource,如下所示。需要使用Spring和Dbcp連接池進行數據庫優化的輸入
@Bean(destroyMethod="close")
public DataSource restDataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(env.getProperty("hibernate.connection.driver_class"));
dataSource.setUrl(env.getProperty("hibernate.connection.url"));
dataSource.setUsername(env.getProperty("hibernate.connection.username"));
dataSource.setPassword(env.getProperty("hibernate.connection.password"));
dataSource.setInitialSize(env.getRequiredProperty("hibernate.dbcp.initialSize", Integer.class));
dataSource.setMaxActive(env.getRequiredProperty("hibernate.dbcp.maxActive", Integer.class));
dataSource.setMaxIdle(env.getRequiredProperty("hibernate.dbcp.maxIdle", Integer.class));
dataSource.setMinIdle(env.getRequiredProperty("hibernate.dbcp.minIdle", Integer.class));
return dataSource;
}
以下是我的屬性文件。
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver
hibernate.connection.username=<>
hibernate.connection.password=<>
hibernate.connection.url=jdbc:oracle:thin:@<Host>:1521:<SID>
hibernate.show_sql=true
hibernate.cache.use_query_cache=true
cache.provider_class=org.hibernate.cache.EhCacheProvider
hibernate.cache.use_second_level_cache=true
hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory
net.sf.ehcache.configurationResourceName=ehcache.xml
**hibernate.dbcp.initialSize=10
hibernate.dbcp.maxActive=100
hibernate.dbcp.maxIdle=30
hibernate.dbcp.minIdle=10**
請建議: -
- 中標記爲粗體(INITIALSIZE,maxActive,了maxidle,minIdle)屬性的任何變化。我的應用程序將由大約100個用戶同時使用,總用戶數大約爲3000.
- 我正在使用Tomcat服務器來部署我的應用程序。我應該使用JNDI進行連接,而不是直接指定連接屬性?上面的方式使用良好的生產系統連接?
而不是我會建議[HikariCP](https://github.com/brettwooldridge/HikariCP)。另外還有[this](https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing),它對游泳池大小有很好的解釋,爲什麼大游泳池游泳池不能正常工作/縮放,甚至可能會減慢你的速度應用。 – 2014-10-07 08:38:42