- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在查看我的查询日志时,我发现了一个我无法解释的奇怪模式。
几乎每次查询后,我都会“从 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 设置为“select 1 from DUAL”(很明显),显然当验证查询为非空时,连接池默认将 testOnBorrow 和 testOnReturn 设置为 true。
这给我带来的另一个问题是我是否真的需要进行验证查询,或者我是否可以通过禁用它或至少降低频率来提高性能与它一起使用。不幸的是,编写我们的“数据库管理器”的开发人员已不在我们身边,所以我不能要求他为我辩护。任何输入将不胜感激。我将深入研究 API 和谷歌一段时间,如果发现任何有值(value)的东西,我会报告回来。
编辑:添加了更多信息
EDIT2:为以后发现此问题的任何人添加正确答案中要求的信息
最佳答案
它可能来自您的应用程序正在使用的连接池。我们使用一个简单的查询来测试连接。
刚刚快速查看了 mysql-connector-j 的源代码,但它不是来自那里。
最可能的原因是连接池。
常用连接池:
commons-dbcp 有一个配置属性 validationQuery
,这结合 testOnBorrow
和 testOnReturn
可能会导致语句你看。
c3p0 有 preferredTestQuery
、testConnectionOnCheckin
、testConnectionOnCheckout
和 idleConnectionTestPeriod
我倾向于配置连接测试和结帐/借用,即使这意味着一些额外的网络聊天,这有什么值(value)。
关于java - 从 DUAL : MySQL 中选择 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/917927/
我是一名优秀的程序员,十分优秀!