您的位置:首页 > 产品设计 > UI/UE

JDBC连接池的testQuery/validationQuery设置

2015-12-24 12:01 351 查看
在《Tomcat中使用Connector/J连接MySQL的超时问题》帖子中想要增加对连接池中连接的测试/验证,防止数据库认为连接已死而Web应用服务器认为连接还有效的问题,Mysql文档中提到Tomcat文档中的例子中用的是validationQuery,但是网上还有很多帖子写的是testQuery,到底用哪一个呢?

原来这跟连接池的实现有关:
连接池实现该功能属性名
The Tomcat JDBC Connection PoolvalidationQuery
The Apache Commons DBCP Connection PoolvalidationQuery
c3p0 - JDBC3 Connection and Statement PoolingpreferredTestQuery
Atomikos:Tomcat 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

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

数据库测试/验证查询
MySQLSELECT 1
PostgreSQLSELECT 1
Microsoft SQL ServerSELECT 1
SQLiteSELECT 1
H2SELECT 1
IngresSELECT 1
Oracleselect 1 from dual
DB2select 1 from sysibm.sysdummy1 或

SELECT current date FROM sysibm.sysdummy1
Apache DerbyVALUES 1 FROM SYSIBM.SYSDUMMY1 或

SELECT 1 FROM SYSIBM.SYSDUMMY1
HSQLDBSELECT 1 FROM any_existing_table WHERE 1=0 或

SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS
Informixselect count(*) from systables
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: