首页 / MYSQL / MySQL 事务四大隔离级别
MySQL 事务四大隔离级别
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL 事务四大隔离级别,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2618字,纯文字阅读大概需要4分钟。
内容图文
![MySQL 事务四大隔离级别](/upload/InfoBanner/zyjiaocheng/525/bbef8c3fcbdb422584972d5f64d4be61.jpg)
MySQL 事务四大隔离级别
事务的四大特性:
原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部都执行,要么都不执行。
一致性(Consistency): 指在事务开始之前和事务结束以后,数据不会被破坏,假如A账户给B账户转10块钱,不管成功与否,A和B的总金额是不变的。
隔离性(Isolation):多个事务并发访问时,事务之间是相互隔离的,一个事务不应该被其他事务干扰,多个并发事务之间要相互隔离。
持久性(Durability):表示事务完成提交后,该事务对数据库所作的操作更改,将持久地保存在数据库之中。
事务的并发问题:
脏读(dirty read):
事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
不可重复读(unrepeatable read):
事务 A多次读取同一数据,事务 B在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。(重点在于修改,满足条件的数据)
幻读:
事务A查询公司年龄大于35岁的员工,结果10个人,事务B插入一条年龄40岁的员工信息,事务A在执行相同的查询得到了11个人 ,就好像发生了幻觉一样,这就叫幻读。(重点在于新增删除,范围条件)
MySQL事务隔离级别:
事务隔离级别 | 脏读 | 不可重复度 | 幻读 |
读未提交(read-uncommitted) | 是 | 是 | 是 |
不可重复读(read-committed) | 否 | 是 | 是 |
可重复读(repeatable-read) | 否 | 否 | 是 |
串行化(serializable) | 否 | 否 | 否 |
Serializable (串行化):可避免脏读、不可重复读、幻读的发生 。
Repeatable read (可重复读):可避免脏读、不可重复读的发生 。
Read committed (读已提交):可避免脏读的发生 。
Read uncommitted (读未提交):最低级别,任何情况都无法保证。
读未提交(Read Uncommitted):
客户端A可以读取到客户端B修改后但未提交的数据,一旦客户端B的事务因为某种原因回滚,所有的操作都将会被撤销,那客户端A查询到的数据其实就是脏数据。
不可重复度【已提交读】(Read Committed):
客户端B的事务还没提交,客户端A不能查询到B已经更新的数据,解决了脏读问题,但是客户端A执行与上一步相同的查询,结果与上一步不一致,即产生了不可重复读的问题。
可重复读(Repeatable Read):
客户端A在查询过程中,客户端B有数据修改并提交事务,客户端A再查询和上一步结果相同,解决了不可重复读的问题,但是还会存在幻读的问题。比如客户端A查询时没有id为1的数据,此时客户端B向表中插入一条数据id为1并提交,这时客户端A任然以位数据库中没有id为1的数据,于是插入一条id为1的数据,结果报错了,就发生了幻读的问题。
串行化(Serializable):
串行化利用加锁的方式,在这个事务没有被提交之前其他的线程,只能等到当前操作完成之后,才能进行操作,这样会非常耗时,而且,影响数据库的性能,通常情况下,不会使用这种隔离级别。但是这种方式解决了幻读的问题。
MySQL 事务四大隔离级别
标签:oat 员工 原因 隔离级别 更改 避免 相同 问题 客户
本文系统来源:https://www.cnblogs.com/liuchd/p/13089650.html
内容总结
以上是互联网集市为您收集整理的MySQL 事务四大隔离级别全部内容,希望文章能够帮你解决MySQL 事务四大隔离级别所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。