代码之家  ›  专栏  ›  技术社区  ›  biggusjimmus

从DUAL中选择1:MySQL

  •  13
  • biggusjimmus  · 技术社区  · 17 年前

    我不知道这是从哪里来的,我当然也没有明确地提出这个问题。

    日志基本上看起来像这样:

        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连接器-java-5.1.6-bin.jar

    validationQuery设置为“从DUAL中选择1”(显然),当验证查询为非空时,连接池默认testOnBorrow和testOnReturn为true。

    编辑:添加了更多信息

    3 回复  |  直到 15 年前
        1
  •  24
  •   Gareth Davis    17 年前

    它可能来自您的应用程序正在使用的连接池。我们使用一个简单的查询来测试连接。

    常见连接池:

    公共dbcp validationQuery ,这与 testOnBorrow testOnReturn 可能会导致你看到的陈述。

    c3p0 preferredTestQuery , testConnectionOnCheckin , testConnectionOnCheckout idleConnectionTestPeriod

        2
  •  5
  •   Durga Prasad    16 年前

    我已经进行了100次插入/删除,并在DBCP和C3PO上进行了测试。

    C3P0::testConnectionOnCheckout=true对响应时间的影响超过3倍。

    100笔交易的平均时间(插入操作) testOnBorrow=真:1071.56毫秒

    C3PO组合冷却数据源 100笔交易的平均时间(插入操作) testConnectionOnCheckout=假::220.08毫秒 testConnectionOnCheckout=true::661.44毫秒

    testConnectionOnCheckout=假::216.52毫秒 testConnectionOnCheckout=true:648.29毫秒

        3
  •  1
  •   Cody Caughlan    17 年前

    select curdate()
    

    可以是

    select curdate() from dual
    

    推荐文章