首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql-选择使用Repeatable read的原因

问题背景 在mysql调优的过程中发现,mysql的默认隔离级别是可重复读(repeatable read),其他几类关系型数据库pg,以及sybase,oracle,sqlserver的默认的隔离级别都是读已提交...可重复读(Repeatable Read),简称为RR; 读已提交(Read Commited),简称为RC; 四种隔离级别 首先我们了解下四种隔离级别的区别。...) 满足隔离的简单定义:一个事务只能看到已提交事务所做的改变 这种隔离级别,支持所谓的不可重读(Non-repeatable Read),同一事务的其他实例在该实例过程中可能有新commit,所以同一个...为什么选择REPEATABLE READ? mysql为什么选择使用可重复读来作为默认的隔离级别呢?...因此mysql将可重复读(repeatable read)作为默认的隔离级别!

63510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    OB 运维 | OBOracle 竟然可以使用 Repeatable Read?

    OceanBase 的 Oracle 模式不是只支持 2 种隔离级别: 读已提交(Read Committed) 可串行化(Serializable) 为什么还讨论在 OBOracle 下使用 可重复读(Repeatable...由上可知,当值为 4 时,JDBC 将会传递下述 SQL 给后端 OBServer: SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ 前文提到...结果是 OBOracle 可以实现可重复读的效果,且通过客户端命令查询到当前会话被设置为了 REPEATABLE READ。...4Repeatable Read 和 Serializable 最后再简单说明下,官网提到 OB 的 MySQL 模式支持 3 种隔离级别(RC、RR、Serializable),Oracle 模式支持...5结论 应用通过 oceanbase-client 驱动访问 OceanBase Oracle 模式数据库时,要想实现 Repeatable Read(可重复读) 的效果,除了需要设置 setReadOnly

    9310

    Mysql为何使用可重复读(Repeatable read)为默认隔离级别?

    群里有小伙伴面试时,碰到面试官提了个很刁钻的问题:Mysql为何使用可重复读(Repeatable read)为默认隔离级别???...>一文搞懂事务 为什么是RR 一般的DBMS系统,默认都会使用读提交(Read-Comitted,RC)作为默认隔离级别,如Oracle、SQL Server等,而MySQL却使用可重复读(Read-Repeatable...(1)隔离级别设为可重复读(Repeatable Read),在该隔离级别下引入间隙锁。当Session 1执行delete语句时,会锁住间隙。那么,Ssession 2执行插入语句就会阻塞住!...因此由于历史原因,mysql将默认的隔离级别设为可重复读(Repeatable Read),保证主从复制不出问题!...'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> set tx_isolation = 'repeatable-read'; Query

    1.6K20

    MySQL默认隔离级别REPEATABLE-READ并没有解决幻读问题

    前言MySQL默认的隔离级别是REPEATABLE-READ(可重复读)。虽然它可以提供一定程度上的数据一致性和隔离性,但并不能完全解决幻读问题。...在REPEATABLE-READ隔离级别下,只能保证在同一事务中相同的查询语句返回相同的结果,但无法防止其他事务插入新的数据,从而导致当前事务的查询结果发生变化。...幻读演示MySQL默认隔离级别REPEATABLE-READ(可重复读)会话一会话二MySQL [test]> select * from t1;+------+| id |+------+|...version();+-----------+| version() |+-----------+| 8.0.21 |+-----------+1 row in set (0.000 sec)总结在REPEATABLE-READ...FOR UPDATE语句进行的读取操作)在REPEATABLE-READ隔离级别下仍然可能遇到幻读。

    60430

    数据库隔离级别—MySQL的默认隔离级别就是Repeatable,Oracle默认Read committed,最高级别Serializable

    目录 Read uncommitted 读未提交 Read committed 读提交 Repeatable read 重复读 Serializable 序列化 什么是脏读 重复读与幻读 隔离级别与锁的关系...Repeatable read 重复读 当隔离级别设置为Repeatable read时,可以避免不可重复读。...虽然Repeatable read避免了不可重复读,但还有可能出现幻读。 singo的老婆工作在银行部门,她时常通过银行内部系统查看singo的信用卡消费记录。...注:MySQL的默认隔离级别就是Repeatable read。...该级别包括REPEATABLE READ,并增加了在事务完成之前,其他事务不能向事务已读取的范围插入新行的限制。比如,事务1读取了一系列满足搜索条件的行。

    3.5K20

    事务的隔离级别

    隔离级别 脏读 不可重复读 幻影读 READ-UNCOMMITTED √ √ √ READ-COMMITTED × √ √ REPEATABLE-READ × × √ SERIALIZABLE × ×...× MySQL 的默认隔离级别 MySQL InnoDB 存储引擎的默认支持的隔离级别是 REPEATABLE-READ(可重读)。...| +-----------------+ 注意: InnoDB 存储引擎在 REPEATABLE-READ(可重读)事务隔离级别下,使用的是 Next-Key Lock 锁算法,因此可以避免幻读的产生...可以说,InnoDB 存储引擎默认支持的隔离级别 REPEATABLE-READ(可重读) ,已经可以完全保证事务的隔离性要求,即达到了 SQL 标准的 SERIALIZABLE(可串行化) 隔离级别。...隔离级别越低,事务请求的锁越少,所以大部分数据库系统的隔离级别都是READ-COMMITTED(读取提交内容):,但 InnoDB 存储引擎默认使用的 REPEATABLE-READ(可重读)并不会有任何性能损失

    58540
    领券