设置和更新连接池(OracleConnectionPoolDataSource)属性以获得最佳性能

pro*_*401 7 java oracle connection-pooling

在我正在处理的Java Web应用程序中,我们使用OracleConnectionPoolDataSource来实现数据库连接池功能.每个getConnection调用都包含用户的Oracle ID和密码.因此,每个用户在某种意义上都会得到自己的数据库连接池.

目前,我们使用大多数属性的默认值.这包括

  • MinLimit设置为0
  • MaxLimit设置为Integer.MAX_VALUE
  • MaxStatementsLimit设置为0
  • InactivityTimeout设置为0
  • TimeToLiveTimeout设置为0
  • AbandonedConnectionTimeout设置为0
  • PropertyCheckInterval设置为900
  • ConnectionWaitTimeout设置为0

有关这些属性的更多信息,请参阅Connection Cache Properties.

我们目前没有任何明显的数据库连接问题,但认为性能可能会更好.我的问题是,在调整这些值时,我们应该考虑什么,有人有好的建议或很好的资源.

Vin*_*lds 6

适用于10g第3版(10.1.3.1)的Oracle应用服务器性能指南提供了有关如何优化连接池参数的确切信息.

该信息对于涉及使用连接池来管理与Oracle数据库的连接的应用程序的几乎所有方案都很有用,而不是使用正在使用的应用程序服务器.

例如,为最小池大小设置值始终是一个好习惯.就最大池大小而言,该值不应该过高,因为这可能会加载监听器,特别是如果应用程序倾向于不关闭连接导致泄漏.

最好为语句高速缓存设置合理的值,因为这允许高速缓存预准备语句,从而提高性能.

还应该考虑环境来选择超时.例如,在大多数情况下,连接等待超时不应为零,因为当在足够的时间间隔内无法在池中初始化物理连接时,这可能会导致SQLExceptions.不活动超时应该足够大,以便只有在足够的不活动时间后才能关闭连接; 值太低会导致物理连接过于频繁地创建和丢弃.

编辑:性能指南中给出的指导适用于oracle.jdbc.pool.OracleDataSource类,这是Oracle 10g Application Server用于托管数据源到Oracle数据库的内容.其中大部分肯定会转移到OracleConnectionPoolDataSource.


yaw*_*awn 5

您是否考虑过使用新的Oracle UCP?引用11g功能列表(强调我的):

1.4.1.29 JDBC的通用连接池(UCP)

JDBC的通用连接池取代隐式连接缓存并提供以下功能:

  • 连接标签,连接收集,日志记录和统计信息
  • 性能和稳定性增强
  • 改进了诊断和统计或指标

UCP for JDBC提供高级连接池功能,改进的性能以及更好的连接问题可诊断性.

  • 我喜欢这个答案.很遗憾,我们目前无法升级到新的驱动程序. (2认同)