我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Repeatable-Read及Read-Committed有哪些区别

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Repeatable-Read及Read-Committed有哪些区别

这篇文章主要为大家展示了“Repeatable-Read及Read-Committed有哪些区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Repeatable-Read及Read-Committed有哪些区别”这篇文章吧。

mysql 默认提供的是 Repeatable-Read 可重复读,更适用于oltp
Read-Committed 不可重复读 也可以叫做提交读
在MySQL中基本有这两种事务隔离级别的设置,默认的RR(Repeatable-Read)和实际中常见的RC(Read-Committed)。两者区别是什么,怎么正确理解,用几个SQL语句就能说明白,就用简单的实验来说明白。

   我们开始吧。    

   首先创建一个测试表test,插入一些数据。

create table test( id int primary key,name varchar(30),memo varchar(30));
insert into test values(1,'name1','aaaa'),(2,'name2','aaaa'),(3,'name3','aaaa'),(4,'name4','aaaa'),(5,'name5','aaaa');     很多情况下,我们会把隔离级别从默认的RR修改为RC,这也是其它很多数据库默认的事务隔离级别。

我们打开两个窗口,来对比关联测试。


RC模式下的测试

1

窗口1

>show variables like 'tx_isolation';   
+---------------+----------------+
| Variable_name | Value          |
+---------------+----------------+
| tx_isolation  | READ-COMMITTED |
+---------------+----------------+
1 row in set (0.01 sec)

>begin;  --开启事务 
>select *from test;  --查看数据
+----+-------+------+
| id | name  | memo |
+----+-------+------+
|  1 | name1 | aaaa |
|  2 | name2 | aaaa |
|  3 | name3 | aaaa |
|  4 | name4 | aaaa |
|  5 | name5 | aaaa |
+----+-------+------+
5 rows in set (0.00 sec)

2

窗口2

begin;  --开启事务
>update test set name='aaaaa' where id=2;  --修改一条记录
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0
>commit;  --提交事务
Query OK, 0 rows affected (0.01 sec)

1

窗口1

>select *from test;   --查看窗口1中的数据,就会发现原来窗口的数据发生了变化,这是不可重复读的一个典型例子。
+----+-------+------+
| id | name  | memo |
+----+-------+------+
|  1 | name1 | aaaa |
|  2 | aaaaa | aaaa |
|  3 | name3 | aaaa |
|  4 | name4 | aaaa |
|  5 | name5 | aaaa |
+----+-------+------+
5 rows in set (0.00 sec)

RR模式下的测试

再来看看RR这个隔离级别,其实有了上面的测试,就相对有底了。这是MySQL默认的隔离级别,会出现幻读的情况。

1

窗口1

首先修改隔离级别从RC到RR

>set global transaction isolation level repeatable read; 
Query OK, 0 rows affected (0.00 sec)
?查看事务隔离级别。
>show variables like 'tx_isolation';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| tx_isolation  | REPEATABLE-READ |
+---------------+-----------------+
1 row in set (0.00 sec)

>begin;   --开启事务
>select *from test;   --查看表test的数据。
+----+-------+------+
| id | name  | memo |
+----+-------+------+
|  1 | name1 | aaaa |
|  2 | aaaaa | aaaa |
|  3 | name3 | aaaa |
|  4 | name4 | aaaa |
|  5 | name5 | aaaa |
+----+-------+------+
5 rows in set (0.00 sec)

2

窗口2

>begin;  --开启事务
>update test set name='RR_test';  --修改表test的数据,所有记录都发生变化。
Query OK, 5 rows affected (0.01 sec)
Rows matched: 5  Changed: 5  Warnings: 0
>commit;  --提交事务
Query OK, 0 rows affected (0.00 sec)

1

窗口1


>select *from test;  --在RR模式下,窗口1中的事务因为还没有提交,看到的还是原来的数据。
+----+-------+------+
| id | name  | memo |
+----+-------+------+
|  1 | name1 | aaaa |
|  2 | aaaaa | aaaa |
|  3 | name3 | aaaa |
|  4 | name4 | aaaa |
|  5 | name5 | aaaa |
+----+-------+------+
5 rows in set (0.00 sec)
>commit;  --我们提交窗口1的事务
Query OK, 0 rows affected (0.00 sec)
>select *from test;  --再次查看数据就发生了变化,实际上窗口1中没有任何的DMl操作。
+----+---------+------+
| id | name    | memo |
+----+---------+------+
|  1 | RR_test | aaaa |
|  2 | RR_test | aaaa |
|  3 | RR_test | aaaa |
|  4 | RR_test | aaaa |
|  5 | RR_test | aaaa |
+----+---------+------+
5 rows in set (0.00 sec)

以上是“Repeatable-Read及Read-Committed有哪些区别”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Repeatable-Read及Read-Committed有哪些区别

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Repeatable-Read及Read-Committed区别

mysql 默认提供的是 Repeatable-Read 可重复读,更适用于oltp Read-Committed 不可重复读 也可以叫做提交读 在MySQL中基本有这两种事务隔离级别的设置,默认的RR(Repeatable-Read)和实际中常见的RC(Re
Repeatable-Read及Read-Committed区别
2021-11-04

C#中重写及覆盖的区别有哪些

这篇文章主要介绍了C#中重写及覆盖的区别有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中重写及覆盖的区别有哪些文章都会有所收获,下面我们一起来看看吧。1. 重写和覆盖的定义1.1 重写(overrid
2023-07-05

CentOS中命令选项及参数简介有哪些区别

这篇文章主要介绍“CentOS中命令选项及参数简介有哪些区别”,在日常操作中,相信很多人在CentOS中命令选项及参数简介有哪些区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CentOS中命令选项及参数简
2023-06-10

RTM和RTW以及GA等软件版本的区别有哪些

本篇文章给大家分享的是有关RTM和RTW以及GA等软件版本的区别有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一直以来,对于新手而言,软件的版本号都是个比较困扰人的问题,
2023-06-14

Amazon EC2的架构及与Google容器服务有哪些区别

本篇内容介绍了“Amazon EC2的架构及与Google容器服务有哪些区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一般来说,在一个集
2023-06-10

DIV建站、Table建站以及XHTML建站的区别有哪些

这篇文章将为大家详细讲解有关DIV建站、Table建站以及XHTML建站的区别有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。网站建设,简单的来说,就是“这个人长的怎么样”和“这个人内心怎么样”。一部
2023-06-08

Win7系统MSDN版、OEM版、RTM版、VOL版各是什么意思以及各版本之间的区别有哪些

我们www.cppcns.com常常听说操作系统的MSDN版、OEM版、R编程客栈TM版、VOL版等等,它们到底是什么意思,有什么不同呢?(一)MSDN (Microsoft Developer Network)版MSDN软件是微软公司面向
2023-06-06

编程热搜

目录