mysql - 配置 MyBatis 使用轻量级 MySQL ping/* ping */

标签 mysql jdbc connection-pooling mybatis ibatis

使用 JDBC MySQL 驱动程序(v5.1.3 及更高版本),可以通过以 /* ping */ 为前缀发出“轻量级”ping 而不是提供的 SQL 语句。

例如:/* ping */SELECT 1

我正在尝试配置 myBatis 来使用它,但它不起作用。我可以通过使用 xRebel(分析工具)或通过将 SELECT 1 替换为非常慢的语句来确认原始 SQL 正在运行而不是轻量级 ping。

有谁知道为什么,或者如何解决这个问题?

来 self 的 myBatisMapperConfig.xml 副本

<environments default="dev">
    <environment id="dev">
        <transactionManager type="JDBC" />
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver" />
            <property name="url" value="${db.dev.url}" />
            <property name="username" value="${db.dev.username}" />
            <property name="password" value="${db.dev.password}" />
            <property name="poolPingQuery" value="/* ping */ SELECT 1" />
            <property name="poolPingEnabled" value="true" />
            <property name="poolMaximumActiveConnections" value="50" />
            <property name="poolMaximumIdleConnections" value="5" />
            <property name="poolMaximumCheckoutTime" value="10000" />
        </dataSource>
    </environment>

解释轻量级 ping 的引用资料:

在 myBatis 中解释 ping 连接的引用资料(搜索“poolPingQuery”):

最佳答案

您可能已经想到了这一点,但您还需要设置 poolPingConnectionsNotUsedFor。默认值为 0,即使使用 poolPingEnabled,它也不会在没有时间(以毫秒为单位)的情况下执行 ping。

您链接的引用文献提到了它,但默认值 0 意味着它不会执行 ping 并不明显:/

关于mysql - 配置 MyBatis 使用轻量级 MySQL ping/* ping */,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30160871/

相关文章:

php - LEFT JOINING 两个在字符串条件下不互相引用的表是一个坏主意吗?

php - 显示计数百分比并计算两个 bool 值

MYSQL 为每个条目自动递增 16 位数字

c# - sql连接字符串中 "Max Pool Size"的最大允许值是多少

mysql 连接两个具有空值的表

jdbc - Jdbc中type 2和type 4驱动的实际区别是什么

Java mysql 准备好的语句更新不起作用

java - JTable 与innerJoin 语句结合

java - 如何在运行时从连接池声明中获取用户名

mysql - 连接池的 JNDI 查找