【发布时间】:2015-06-19 03:15:11
【问题描述】:
提到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)从 show variables like "%isolation"; 可以看出我还没有弄清楚为什么第一个更慢。
【问题讨论】:
标签: mysql transactions isolation-level