暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的事务隔离级别

一言良语 2018-10-11
194
本文信息架构
1. 事务的原则介绍
2. 事务并发会造成的问题
3. MySQL的事务隔离级别



事务的原则

  1、原子性:在事务中的操作,必须同时完成或者同时回滚,不会只成功或者回滚一部分。

  2、一致性:不能破坏数据库的一致性状态。

  3、隔离性:不同的事务之前互相不能影响。

  4、持久性:事务完成以后,即保存数据,不会再回滚。


事务并发造成的问题

1、脏读

事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据。

比如:

B把小明的年龄更新成12岁,但是事务还未提交。此时A来读小明的年龄,读到了12岁,然后去做自己的处理。之后B把小明的年龄回滚到11岁。这个例子中A读到的12岁就是脏数据。

2、不可重复读

事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。

比如:

B先把小明的余额更新为100元,A来读的时候读到的是100元,然后B又把余额更新为90元,此时A来读的时候读到的就是90元,也就是A读到的数据前后不一致。

3、幻读

事务A对表中的数据进行了修改,涉及到表中的全部行。同时,事务B也修改这个表中的数据,向表中插入一行新数据。那么,事务A发现表中还有自己没有修改的行,就好象发生了幻觉一样。

比如:

A先把所有人的余额清零,同时,B往表中插入了一条余额为100的数据。A提交以后,发现竟然还有100的,命名刚刚都更新成0了呀。



MySQL的事务隔离级别

1、读未提交:能读到未提交的数据。

2、读已提交:读已提交的数据。

3、可重复读:mysql默认,查询的都是事务开始时的数据。

4、串行读:完全串行化读,每次都会锁表,读写互相阻塞。




END


推荐阅读

相关文章:

spring boot源码分析:(一)启动类注解

spring boot源码分析:(二)启动过程

spring cloud源码分析——ribbon负载均衡策略

关于Java数据库连接池最通俗易懂的介绍

你可能喜欢:

《区块链从入门到放弃》先从一个故事说起

《区块链从入门到放弃》比特币和区块链基础介绍

《区块链从入门到放弃》区块链的共识机制——工作量证明、权益证明、委托权益证明

《区块链从入门到放弃》拜占庭容错算法

《区块链从入门到放弃》51%攻击和双花问题

利用Axure中继器实现添加删除商品原型

人工智能写代码?放心,Sketch2Code干不过前端开发






自由,

是因为自己真的有方向。




文章转载自一言良语,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论