JDBC连接池的testQueryvalidationQuery设置

在《<A title=Tomcat中使用Connector/J连接MySQL的超时问题 href="http://blog.sina.com.cn/s/blog_72ef7bea0101hnz9.html" target=_blank>Tomcat中使用Connector/J连接MySQL的超时问题》帖子中想要增加对连接池中连接的测试/验证,防止数据库认为连接已死而Web应用服务器认为连接还有效的问题,Mysql文档中提到Tomcat文档中的例子中用的是validationQuery,但是网上还有很多帖子写的是testQuery,到底用哪一个呢?

 

原来这跟连接池的实现有关:

连接池实现

该功能属性名

The Tomcat JDBC Connection Pool

validationQuery

The Apache Commons DBCP Connection Pool

validationQuery

c3p0 - JDBC3 Connection and Statement Pooling

preferredTestQuery

AtomikosTomcat Spring ActiveMQ MySQL JMX Integration
分析Atomikos数据连接池源码,弄清testQuery

testQuery



此外,测试/验证连接池连接的SQL语句也因数据库而异:
Efficient SQL test query or validation query that will work across all (or most) databases
DBCP - validationQuery for different Databases

综合上述两个帖子,汇总结果如下:

数据库

测试/验证查询

MySQL

SELECT 1

PostgreSQL

SELECT 1

Microsoft SQL Server

SELECT 1

SQLite

SELECT 1

H2

SELECT 1

Ingres

SELECT 1

Oracle

select 1 from dual

DB2

select 1 from sysibm.sysdummy1
SELECT current date FROM sysibm.sysdummy1

Apache Derby

VALUES 1 FROM SYSIBM.SYSDUMMY1
SELECT 1 FROM SYSIBM.SYSDUMMY1

HSQLDB

SELECT 1 FROM any_existing_table WHERE 1=0
SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS

Informix

select count(*) from systables

 

转载于:https://my.oschina.net/xiaoniull/blog/610796

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值