配置 MyBatis 使用轻量级 MySQL ping /* ping */
configuring MyBatis to use lightweight MySQL ping /* ping */
使用 JDBC MySQL 驱动程序(v5.1.3 及更高版本),可以通过前缀发出 "lightweight" ping 而不是提供的 SQL 语句/* ping */
。
例如:/* ping */ SELECT 1
我正在尝试配置 myBatis 来使用它,但它不起作用。我可以确认原始 SQL 是 运行 而不是轻量级的 ping,方法是使用 xRebel(分析工具)或用非常慢的语句交换 SELECT 1
。
有谁知道这是为什么,或者如何解决这个问题?
来自我的副本 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 的参考资料:
- http://dev.mysql.com/doc/connector-j/en/connector-j-usagenotes-j2ee-concepts-connection-pooling.html
- MySQL connection validity test in datasource : SELECT 1 or something better?
解释在 myBatis 中 ping 连接的参考资料(搜索 "poolPingQuery"):
您可能已经想到了这一点,但您还需要设置 poolPingConnectionsNotUsedFor
。默认值为 0,即使使用 poolPingEnabled
也不会在没有时间(以毫秒为单位)的情况下执行 ping。
您链接的参考文献提到了它,但默认值 0 意味着它不会执行 ping 并不明显:/
使用 JDBC MySQL 驱动程序(v5.1.3 及更高版本),可以通过前缀发出 "lightweight" ping 而不是提供的 SQL 语句/* ping */
。
例如:/* ping */ SELECT 1
我正在尝试配置 myBatis 来使用它,但它不起作用。我可以确认原始 SQL 是 运行 而不是轻量级的 ping,方法是使用 xRebel(分析工具)或用非常慢的语句交换 SELECT 1
。
有谁知道这是为什么,或者如何解决这个问题?
来自我的副本 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 的参考资料:
- http://dev.mysql.com/doc/connector-j/en/connector-j-usagenotes-j2ee-concepts-connection-pooling.html
- MySQL connection validity test in datasource : SELECT 1 or something better?
解释在 myBatis 中 ping 连接的参考资料(搜索 "poolPingQuery"):
您可能已经想到了这一点,但您还需要设置 poolPingConnectionsNotUsedFor
。默认值为 0,即使使用 poolPingEnabled
也不会在没有时间(以毫秒为单位)的情况下执行 ping。
您链接的参考文献提到了它,但默认值 0 意味着它不会执行 ping 并不明显:/