当前位置: 首页 > news >正文

浅谈Mysql的RR和RC隔离级别的主要区别

MySQL默认为RR级别

首先默认RR是因为mysql为了保证在主从同步过程中数据的安全的问题(涉及到binlog三种格式)。

就是说两个并发事务数AB,A先开启事物最后提交也是最后,事务B开启和提交都在A内部,由于隔离级别不同(RR和RC)会导致数据执行的顺序不同,数据结果就不同。主从同步过程binlog如果为statement格式(statement格式的bin log记录就是SQL语句原句)就有出现问题。以至于后来官方规定了这个格式下不允许设置为RC级别。而RR得到解决是又加了GAP锁和临键锁使得必须得大事务A提交或者回滚了才能执行里面的小事务B。

RR和RC隔离级别的主要区别

隔离级别改为RC级别,主要是可以提升并发度、降低发生死锁的概率。

RC的锁更少只有锁记录,而且支持“半一致读”,感兴趣可详细查看书籍。

一致性读

RR在select读只生成一次快照读,RR都重新生成保证读的数据是最新的

锁机制

RR支持三种锁(为了解决幻读的问题,支持Record Lock的同时,还支持Gap Lock和Next-Key Lock)。
RC只支持一种(只会对索引增加Record Lock)

binlog格式支持程度

MySQL的binlog主要支持三种格式,分别是statement、 row、mixed

RC 只支持row格式的binlog。不支持statement格式。
(如果指定了mixed作为 binlog 格式,会自动使用row 格式的日志记录)
RR 三种都支持。

http://www.lryc.cn/news/65182.html

相关文章:

  • Build生成器模式
  • C++程序设计——常见C++11新特性
  • Rust main 函数返回值类型不能是 String
  • 视频里的音乐怎么转换成mp3格式?
  • CSS3 grid网格布局
  • SPSS如何进行均值比较和T检验之案例实训?
  • Packet Tracer - 配置交换机端口安全
  • 一图看懂 aiohttp 模块:基于 asyncio 的异步HTTP网络库, 资料整理+笔记(大全)
  • Linux + 香橙派 + V4L2 + http 实现远程监控摄像头在网页端显示
  • 《编码——隐匿在计算机软硬件背后的语言》精炼——第15-16章(十六进制,RAM)
  • leetcode.1376 通知所有员工所需的时间 - bfs/dfs + 树
  • AtCoder Beginner Contest 300——A-G题讲解
  • Go:值与指针
  • 【Linux】进程学习(2)---理解进程操作
  • 基于springcloud实现的医院信息系统
  • 设计模式-创建型模式-(工厂、简单工厂、抽象工厂)
  • JAVA12新特性
  • Nginx 静态文件、反向代理、负载均衡、缓存、SSL/TLS 加密、gzip 压缩 等等
  • Linux设备驱动模型(一)
  • 【Python入门篇】——Python基础语法(标识符与运算符)
  • 扩展 VirtualBox 已分配磁盘的方法
  • 【LeetCode】646. 最长数对链
  • Makefile教程(Makefile的结构)
  • SpringMVC(后)SSM整合
  • 【博弈论】【第一章】博弈论导论
  • keil移植linux(makefile)
  • C++——类和对象(3)
  • itop-3568开发板驱动学习笔记(24)设备树(三)时钟实例分析
  • linux中使用docker部署微服务
  • 操作系统考试复习—第三章 优先级倒置 死锁问题