首页
学习
活动
专区
工具
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)作为默认的隔离级别!

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

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.4K20

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隔离级别下仍然可能遇到幻读。

38030

数据库隔离级别—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.2K20

事务的隔离级别

隔离级别 脏读 不可重复读 幻影读 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(可重读)并不会有任何性能损失

57840
领券