在查看我的查询日志时,我看到了一个我没有解释的奇怪模式。
在几乎每个查询之后,我都有“从 DUAL 中选择 1”。
我不知道这是从哪里来的,而且我当然没有明确地进行查询。
日志基本上是这样的:
10 Query SELECT some normal query
10 Query select 1 from DUAL
10 Query SELECT some normal query
10 Query select 1 from DUAL
10 Query SELECT some normal query
10 Query select 1 from DUAL
10 Query SELECT some normal query
10 Query select 1 from DUAL
10 Query SELECT some normal query
10 Query select 1 from DUAL
...etc...
有没有人遇到过这个问题?
MySQL 版本:5.0.51
驱动程序:使用 JDBC 的 Java 6 应用程序。mysql-connector-java-5.1.6-bin.jar
连接池:commons-dbcp 1.2.2
validationQuery 设置为“从 DUAL 中选择 1”(显然),并且当验证查询为非空时,连接池显然默认 testOnBorrow 和 testOnReturn 为 true。
这给我带来的另一个问题是我是否真的需要验证查询,或者我是否可以通过禁用它或至少降低使用它的频率来提高性能。不幸的是,编写我们的“数据库管理器”的开发人员已不在我们身边,所以我不能要求他为我证明这一点。任何输入将不胜感激。我将通过 API 和谷歌挖掘一段时间,如果我发现任何有价值的东西,我会报告。
编辑:添加了更多信息
EDIT2:为以后发现此问题的任何人添加了正确答案中要求的信息