IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 正确理解MYSQL事务的可重复读RR隔离级别与锁 -> 正文阅读

[大数据]正确理解MYSQL事务的可重复读RR隔离级别与锁

1,mysql默认的事务隔离级别是可重复度。

可重复度就是在一个事务中对相同数据的多次查询将返回相同结果。

比如

事务1:

BEGIN;

SELECT age from student where id=1;

此时 age=10

.....业务代码(在此时别的事务或者直接在数据库中把age改成20)

SELECT * from T where id=1;

这里查到的age依然是10而不是数据库的中20.

原理是同一事务内多次查询时会返回该数据在当前事务的快照版本(快照读),对应的还有当前读。

2,可重复读与间隙锁

可重复读级别下条件列有索引时会添加间隙锁,阻止在此间隙内的insert操作,防止出现幻读。

3,应该采用什么隔离级别

在Oracle和SqlServer中,我们选择 Read Commited 作为默认隔离级别,为什么Mysql不选择 Read Committed(Read Commited)作为默认隔离级别,然后选择重复读取(Repeatable Read)作为默认隔离级别?

这是因为5.0之前的MySQL,binlog仅支持语句格式!并且此格式在读已提交的隔离级别下的主从复制中存在错误,因此Mysql使用可重复读作为默认的隔离级别!

但是5.1之后的版本已经支持行模式。所以MYSQL推荐的隔离级别应该为读已提交RC+行格式binlog

4,重点总结

可重复读只能保证同一个事务中相同数据多次查询时得到相同的结果。并不会限制在此过程中其他事务对数据库中此数据的更新操作。要解决多个事务对同一数据的并发写问题,必须自己加锁来实现,乐观锁(版本号)和悲观锁(forupdate)。

基于历史版本兼容的原因,MYSQL默认的隔离级别为RR可重复读。但实际使用中推荐采用RC读已提交级别。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 11:58:25  更:2022-05-10 12:01:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:34:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码