mysql read commited 和 REPEATABLE read 原因
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql read commited 和 REPEATABLE read 原因,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2035字,纯文字阅读大概需要3分钟。
内容图文
![mysql read commited 和 REPEATABLE read 原因](/upload/InfoBanner/zyjiaocheng/477/91b036aca81348ada1cc071179c7dbb8.jpg)
read commited 和 REPEATABLE read
关于一致性读的问题。 参考 mysql 技术内幕--innodb 存储引擎
session 1
:
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from t2;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
同时到session2:
mysql>
mysql>
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from t2;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
mysql> update t2 set id=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql>
mysql> select * from t2;
+------+
| id |
+------+
| 2 |
+------+
1 row in set (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.01 sec)
再回到session1:
如果是
mysql> select @@tx_isolation;
+----------------+
| @@tx_isolation |
+----------------+
| READ-COMMITTED |
+----------------+
1 row in set (0.00 sec)
mysql> select * from t2;
+------+
| id |
+------+
| 2 |
+------+
1 row in set (0.00 sec)
在session1 的同一个事物中,两次查询t2,会看到不通的结果,
如果是:
mysql> select @@tx_isolation;
+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set (0.00 sec)
在session 1 中,看到
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from t2;
+------+
| id |
+------+
| 2 |
+------+
1 row in set (0.00 sec)
mysql> select * from t2;
+------+
| id |
+------+
| 2 |
+------+
1 row in set (0.00 sec)
是同一个结果。
这是由于mysql的一致性非锁定读 造成的。
如果读取的行正在备其他事物执行update或delete操作,这时读取操作不会因此去等待行上锁
的释放,innodb回去读一个快照数据。因为不需要等待访问的行上x锁的释放,所以称之为非锁定读。
快照数据是指该行 的之前版本的数据(可能有多个版本)。是通过undo断来实现的,undo是用
来在事物中回滚数据,因此快照数据没有额外开销。
在REPEATABLE read 下,快照读总是读取事物开始时的行版本数据;而在read commited下,
是读取最新一份快照,所以一个查询会看到不通的结果。
mysql read commited 和 REPEATABLE read 原因
标签:mysql隔离级别
本文系统来源:http://lijiajun.blog.51cto.com/9530479/1903974
内容总结
以上是互联网集市为您收集整理的mysql read commited 和 REPEATABLE read 原因全部内容,希望文章能够帮你解决mysql read commited 和 REPEATABLE read 原因所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。