via: http://blog.sina.com.cn/s/blog_72ef7bea0101hpj8.html
JDBC连接池的testQuery/validationQuery设置
在《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 |
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
综合上述两个帖子,汇总结果如下:
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 |
相关推荐
Java JDBC 连接池是Java数据库连接(Java Database Connectivity)的一种优化机制,它是为了提高数据库访问效率、节约系统资源而引入的技术。在没有连接池的情况下,每次应用需要与数据库交互时,都需要创建一个新的...
在Java编程中,连接池是一种优化数据库访问性能的技术。它通过预先创建并管理一定数量的数据库连接,避免了每次需要数据库连接时的创建和销毁过程,从而提高了应用程序的效率。本示例中的"简单的jdbc连接池类"实现了...
java.lang.NoClassDefFoundError: javax/validation/valueextraction/ValueExtractorDeclarationException 今天部署环境遇到这个问题,查了好长时间终于解决了; 问题原因: 由于jar包hibernate-validator、...
用于直接测试 FTP 和 JDBC连接 SAP PI PO FTP_JDBC_ConnectionValidation_731.ear 1085539 - XI JDBC/FTP connection Test and XML Validation Application
- validationQuery:用于验证连接是否有效的SQL查询 例如,使用HikariCP的配置可能如下: ```java HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb"); config....
Java Hibernate 中的各种连接池在应用程序开发中扮演着关键角色,它们负责管理数据库连接,提高性能并减少资源消耗。本文将对比分析三个常见的开源数据连接池:C3P0、DBCP 和 Proxool,并深入探讨它们的主要参数和...
- `maxWait` 设置连接池在没有可用连接时的最大等待时间(毫秒)。 - `logAbandoned` 设置是否记录被丢弃的连接。 - `username` 和 `password` 分别表示数据库用户名和密码。 - `driverClassName` 指定 JDBC ...
- **初始化连接池**:使用如C3P0或HikariCP等开源库来初始化连接池,设置连接池的最小和最大连接数等参数。 - **获取连接**:在需要访问数据库的地方,通过数据源对象获取数据库连接。 - **使用连接**:执行SQL语句...
- **Validation Query**:可以留空或者设置为 `SELECT 1` - 完成后点击“Save”、“Commit Changes”。至此,数据源配置完成。 #### 三、修改配置文件 1. **修改`web.xml`** - 在 `%TOMCAT_HOME%\conf\...
// Define transaction validation parameters "validator_mode": { // Required: A random string used to generate the chain namespace "instance_seed": "", "validator": { "provider": "PermissionBased...
- Druid的配置除了基本配置外,还包括`testWhileIdle`(空闲时测试连接是否有效)和`validationQuery`(用于检查连接是否有效的SQL查询)等。 4. 使用建议 选择数据库连接池时,应考虑性能、稳定性、社区支持和与...
- **Validation Query**:可选,用于验证连接是否可用的SQL语句,例如`SELECT 1`。 4. **保存并提交更改** - 完成设置后,依次点击`Save`、`Commit Changes`、`Log Out`完成数据源的创建。此时,Tomcat会自动更新...
- `validationQuery`:用于验证数据库连接是否有效,如`SELECT 1`。 - `testOnBorrow`:在借用连接时执行验证查询,确保连接可用。 - `testOnReturn`:在归还连接时执行验证查询。 - `testWhileIdle`:在空闲时执行...
在Java Web开发中,数据库连接池技术的应用极为广泛。合理的数据库连接管理不仅能提高应用程序的性能,还能有效避免因频繁创建销毁连接所导致的资源浪费问题。Apache Tomcat作为一款流行的Java Web服务器,其内置的...
1. **DBCP**: DBCP (Database Connection Pool) 是一个基于Jakarta commons-pool对象池机制的数据库连接池组件,广泛应用于Java Web应用中。 - **官方下载地址**: [Apache Commons DBCP]...
- Validation Query: 可选 - 保存并提交更改。 #### 三、示例代码演示 以下是一个简单的示例代码,展示如何在 JSP 页面中使用上述配置的数据源: ```jsp <!DOCTYPE ...
java.nio.channels 定义了各种通道,这些通道表示到能够执行 I/O 操作的实体(如文件和套接字)的连接;定义了用于多路复用的、非阻塞 I/O 操作的选择器。 java.nio.channels.spi 用于 java.nio.channels 包的服务...
awesome-datasets, 面向 papers/experiments/validation的精选数据集的精选列表 出色的数据集面向 papers/experiments/validation.的精选数据集的精选列表Awesome数据集分类规则半监督回归模型时间序列无监督( 群集)...