美文网首页
事务隔离级别-学习

事务隔离级别-学习

作者: AAA建材王总 | 来源:发表于2017-08-28 15:36 被阅读0次

不准确,待更新

(因为MySQL通过使用next-key锁避免了幻读->RR级别,同一个事务的相同查询,可以得到两个不同的结果,文中的例子说明说服力还不够,可以先关闭MySQL的Gap锁)
很清楚的一个说明:
五分钟搞清楚MySQL事务隔离级别 @伞U

事务隔离级别:
未提交读(Read uncommitted),已提交读(Read committed),可重复读(Repeatable read),串行读(Serializable)。
MySQL支持的事务默认级别是可重复读,会出现幻读(插入+删除)的现象。

trans_id start_time overtime status cmt_rbk_time memo
894809860158263330 1503902963 30 2 1503902963 NULL

MySQL 引擎选择InnoDB,一个表中的数据如上。

现在开启两个客户端,对表中的这条数据进行操作
客户端A和客户端B如下的SQL语句:

①start transaction;
②select * from trans_context;
③update trans_context set overtime = 31, cmt_rbk_time = cmt_rbk_time + 1 where cmt_rbk_time=1503902963;
④update trans_context set overtime = 32, cmt_rbk_time = cmt_rbk_time + 1 where cmt_rbk_time=1503902963;
⑤commit;

1.客户端A输入①开启一个事务,这时候读取数据库里的数据:


A1

2.接着客户端B输入①开启一个事务,并且读取数据库里的数据,和客户端A读到的数据是一样的:


B1
3.此时客户端A执行③更新语句,再通过②语句查询,查询结果如下,发现数据确实有了变化:
A2

4.此时客户端B执行②查询语句,查询结果如下,在事务B中的数据没有变化,读取不到事务A中的更新:


B2
5.此时在客户端B中执行更新语句,结果,并不能对这一行数据进行更新:
B3
6.此时客户端A执行commit,提交成功,客户端B会同样做出反应,提示:
B4
7.在客户端B中,再次用②查询数据,仍然是没有更新的语句:
B5
8.客户端B提交commit后再次查询数据时,可以看到客户端A更新的数据了:
B6

总结:MySQL默认的可重复读,在一个事务中,是无法读到别人未提交或已提交的更新数据。

当前会话可以重复读,每次读取的结果集都相同,而不管其他事务有没有提交。

幻读

幻读的问题 @jackbillow

幻读

相关文章

  • Spring 中的事务隔离级别

    什么是事务隔离级别? 事务隔离级别是对事务 4 大特性中隔离性的具体体现,使用事务隔离级别可以控制并发事务在同时执...

  • 【重学MySQL打卡行动】Day3事务隔离:为什么你改了我还看不

    学习内容 : 事务隔离级别与实现 一、隔离性与隔离级别 1.事务的特性:原子性、一致性、隔离性、持久性2.多事务同...

  • 事务隔离级别-学习

    不准确,待更新 (因为MySQL通过使用next-key锁避免了幻读->RR级别,同一个事务的相同查询,可以得到两...

  • MySQL事务隔离级别学习

    1. MySQL事务隔离级别学习笔记 1.1. 隔离级别 READ UNCOMMITTED 未提交读在READ U...

  • MySQL_tx_isolation

    事务隔离级别 一、数据库事务隔离级别数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、...

  • MySQL事务隔离级别和实现原理,看这一篇就够了!!!

    经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么...

  • 面试题

    基础知识 1、事务隔离级别 补充: 1、事务隔离级别为读提交时,写数据只会锁住相应的行 2、事务隔离级别为可重复读...

  • 数据库事务相关

    事务隔离级别(tx_isolation)mysql 有四级事务隔离级别 每个级别都有字符或数字编号 级别symbo...

  • 关于Spring的事务Transactional,锁同步,并发线

    Spring事务传播机制和数据库隔离级别 在标准SQL规范中定义了4个事务隔离级别,不同隔离级别对事务处理不同 。...

  • Mysql事务

    事务隔离级别 事务隔离级别有四种:read-uncomitted,read-commited,repeatable...

网友评论

      本文标题:事务隔离级别-学习

      本文链接:https://www.haomeiwen.com/subject/offgdxtx.html