gpt4 book ai didi

java - 从 DUAL : MySQL 中选择 1

转载 作者:IT老高 更新时间:2023-10-29 00:14:11 24 4
gpt4 key购买 nike

在查看我的查询日志时,我发现了一个我无法解释的奇怪模式。

几乎每次查询后,我都会“从 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,这结合 testOnBorrowtestOnReturn 可能会导致语句你看。

c3p0preferredTestQuerytestConnectionOnCheckintestConnectionOnCheckoutidleConnectionTestPeriod

我倾向于配置连接测试和结帐/借用,即使这意味着一些额外的网络聊天,这有什么值(value)。

关于java - 从 DUAL : MySQL 中选择 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/917927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com