set autocommit = 0和set session transaction isolation level之间的区别REPEATABLE READ;启动事务;?

时间:2015-04-13 17:42:21

标签: mysql transactions isolation-level

提到here,innodb中任何事务的默认隔离级别都是可重复读取的。 在上面的相同链接中,还提到如果我设置autocommit = 0,则会话始终打开事务。 现在我的不足之处就是我做了

set session transaction isolation level REPEATABLE READ;

start transaction;

DML(insert, update, delete) queries

commit;

 set autocommit=0;

    DML(insert, update, delete) queries

    commit;

两者都应该这样做,应该以可重复的读隔离级别运行。我最后需要提交或回滚。

但是当我将它们用于大量查询时,第一个需要花费大量时间而第二个花费很少时间。很明显它们并不相同。我错过了什么?当自动提交设置为0时,事务的默认隔离级别是多少?提前谢谢。

编辑:如果我设置了autocommit = 0,我得到了默认隔离级别的答案;(感谢kostja)可以从显示变量中看到,例如&#34;%isolation&#34 ;; < / strong>但我还没有找出为什么第一个更慢。

1 个答案:

答案 0 :(得分:1)

在会话中设置自动提交并不会全局更改。 当然不是这样吗?

回答你的问题,事务隔离级别并不依赖于自动提交。