创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ
目录
- 一、事物的基本特性 ACID
- 1.原子性(Atomicity)
- 2.一致性(Consistency)
- 3.隔离性(Isolation)
- 4.持久性(Durability)
- 二、事物的隔离级别
- 1.读未提交(**Read Uncommitted**)
- 2.读已提交(**Read Committed**)
- 3.可重复读(**Repeatable Read**)
- 4.串行化(**Serializable**)
- 三、并发问题
- 1.脏读
- 2.不可重复读
- 3.幻读
数据库事务代表了对数据库进行的一系列修改操作。
这些操作要么全部执行,要么都不执行,事务保证了数据的完整性和一致性。
一、事物的基本特性 ACID
1.原子性(Atomicity)
事务中的全部操作在数据库中是不可分割的,要么全部完成,要么全不执行。
事务是最小工作单元,不可再分
2.一致性(Consistency)
事务必须使数据库从一个一致性的状态变换到另一个一致性的状态
数据库的完整性约束不能被破坏
3.隔离性(Isolation)
在事务完成之前,对于外部是不可见的。即一个事务不能看到其他未完成的事务所做出的修改。
多个事务互不影响
4.持久性(Durability)
对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失
持久保存到本地 事务–>提交 数据发生改变是永久的
二、事物的隔离级别
由低到高:
1.读未提交(Read Uncommitted)
允许一个事务读取另一个未提交事务的数据(脏读)
2.读已提交(Read Committed)
一个事务要等到另一个事务提交后才能读取数据。解决了脏读的问题,只会读取提交后的数据
可能会出现两次读取结果不一致(不可重复读)
3.可重复读(Repeatable Read)
MySQL 的默认隔离级别
在事务开始读取数据时,不允许其他事务对数据进行修改操作。解决了脏读和不可重复读的问题
可能出现每次读取的数据都一样(幻读)
4.串行化(Serializable)
给每一行数据加锁。开销较大并且存在竞争问题。一般不使用
一般来说,隔离级别越高,数据一致性越强,但并发性能越差。
三、并发问题
1.脏读
一个事务读取到了另一个事务未提交的数据操作结果。
2.不可重复读
一个事务对同一行数据重复读取两次,但是得到了不同的结果。
3.幻读
第二次查询的结果包含了第一次查询中未出现的数据或者缺少了第一次查询中出现的数据。
大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。 |
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●) |