sti*_*kku 5 java mysql database hibernate hikaricp
我正在我们的系统上运行一些负载测试,我注意到正在执行大量的"SET autocommit = 0"和"SET autocommit = 1"查询.1分钟内大约25,000左右.我试图找出导致这种情况的原因以及如何摆脱它.
我们使用以下技术:
MySQL的
过冬
阿光
弹簧
Tomcat的
我尝试了以下但它似乎没有帮助:
MySQL中的"SET autocommit = 0"
在db连接URL中添加了elideSetAutoCommits属性."JDBC:MySQL的://本地主机/ DB_NAME了useUnicode =真的characterEncoding = UTF-8&pinGlobalTxToPhysicalConnection =真elideSetAutoCommits =真"
有人能指出我可能导致这些查询的原因吗?
有人可以指出导致这些查询的原因吗?
查询的结果Connection#setAutoCommit(boolean)是用来从默认模式(自动提交模式)切换到事务模式,以便insert/update/delete/read在事务中进行数据查询。
常见的代码是:
// Switch to transactional mode which actually triggers a SET autocommit = 0
con.setAutoCommit(false);
try {
// Some operations on the db
con.commit();
} finally {
// Switch back to auto-commit mode which actually triggers a SET autocommit = 1
con.setAutoCommit(true);
}
Run Code Online (Sandbox Code Playgroud)
这是一个很好的链接,它说明了事务的工作方式JDBC。
如果您知道您的连接池将始终用于以事务方式获取连接,则可以通过在配置中设置默认模式,Hikari这要感谢将参数autoCommit设置为false这种方式,从而使连接已经处于事务方式,从而可以不再需要修改模式。
此属性控制从池返回的连接的默认自动提交行为。它是一个布尔值。默认:
true
有关Hikari 此处配置的更多详细信息。