Hibernate自动提交命令强制MySQL在过多的磁盘I / O中运行

亲爱的大家,

我敢肯定,你们中的许多人都在使用Hibernate和MySQL,我自己在这里和那里都使用它。 通常,编程模型是不错的,但是普通的JDBC可以快得多已经不是什么秘密了。 在这篇文章中,我想引起您的注意Hibernate在您MySQL服务器中引起的一个小问题。

如果跟踪Hibernate发送到MySQL数据库SQL,就会发现一致地,Hibernate以“ SET autocommit = 0”开始每个事务,并以“ commit”结束,然后是“ SET autocommit = 1”。 这些语句看似无害,但它们使MySQL将某些内部状态刷新到磁盘上。 简而言之,每次Hibernate调用这两个语句之一时,MySQL都会编写通常不会编写的内容。 因此,与使用普通JDBC相比,使用Hibernate会使您MySQL服务器在磁盘上的依赖更多。

我做了一个小实验来证明这一点。 要重复此实验,请找到带有MySQL数据库的空闲计算机。 机器不应运行任何会导致磁盘I / O的东西,否则效果将不像对我一样容易看到。

首先,我发送了完整的“ SELECT DUAL DUAL”; 命令进入MySQL提示。 像这样:

while true; do
        echo "SELECT 1 FROM DUAL;"
done | mysql

查看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值