当前位置: 首页 > 知识库问答 >
问题:

设置自动提交=0和设置会话事务隔离级别REPEATABLE READ;启动事务;之间的区别?

汝楷
2023-03-14

这里提到了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时,事务的默认隔离级别是什么?提前谢谢。

编辑:I如果我确实设置了自动提交= 0,则得到了默认隔离级别的答案;(感谢kostja)可以从显示变量中看到,例如“%isolation”;但我还没有找出为什么第一个更慢。

共有1个答案

宓和同
2023-03-14

在会话中设置自动提交不会全局更改它。确定不是这种情况?

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

 类似资料:
  • 我正在写一个小拍卖app,这是非常重要的,我的出价是有把握的记录。毕竟,拍卖的最后几秒钟是买家的关键时刻,我不能冒险让他们同时出价和竞争。 当然,这就是事务隔离的目的。我可以将我的隔离级别设置为可序列化,然后我们就都设置好了。 但是其他的请求呢?如果用户正在查看配置文件或发送消息,则这些请求不需要任何接近那种事务隔离的地方。对于这些请求,“已提交读”隔离级别是完全可以接受的。 我正在将事务级别设置

  • 本文向大家介绍Mysql事务隔离级别之读提交详解,包括了Mysql事务隔离级别之读提交详解的使用技巧和注意事项,需要的朋友参考一下 查看mysql 事务隔离级别 可以看到当前的事务隔离级别为 READ-COMMITTED 读提交 下面看看当前隔离级别下的事务隔离详情,开启两个查询终端A、B。 下面有一个order表,初始数据如下 第一步,在A,B中都开启事务 第二步查询两个终端中的number值

  • 在我的airflow升级到2.0.0(然后是2.0.1)并且调度程序扩展到3个节点之后,奇怪的事情发生了: DAGRUNN成功,但根本没有计划任务实例 任务失败,主机名为空(https://github.com/apache/airflow/issues/13692) 任务设置为“upstream_failed”,而上游任务成功(https://github.com/apache/airflow/

  • 我有一个对具有 SQL API 的 Cosmos 容器的长期运行查询,该查询需要 10 分钟以上才能完成。有没有办法将数据库的隔离级别设置为“可重复读取”或“可序列化”,以避免幻像读取,如这里所定义的那样? 我知道我们可以为 Cosmos DB 设置一致性级别,但它仅适用于地质副本之间的读/写一致性,而不适用于事务隔离。

  • 本文向大家介绍事务的隔离级别有哪些?相关面试题,主要包含被问及事务的隔离级别有哪些?时的应答技巧和注意事项,需要的朋友参考一下 SQL 标准定义了四个隔离级别: READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。 READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重

  • 主要内容:事务概述,事务的四大特性,并发事务问题,事务的隔离级别,演示:,总结事务概述 事务是一个或一组sql语句组成的一个执行单元,这个执行单元要么全部执行成功,要么全部执行失败。用于保证数据的完整性。 如账户转账,张三给李四转500,对应的sql语句应该是update张三的 余额-500,并且update李四的余额+500,如果先更新完张三的数据,然后出现了异常,导致李四的余额修改不了,那么就出现数据上的问题了,应该使用事务来解决这一问题,当中间出现异常后回滚,让张三的