ACID、事务隔离、脏读、可重复读、幻读
# ACID、事务隔离、脏读、可重复读、幻读## ACID的概念:
- 原子性(atomicity):一个事务中的操作,要么全部完成,要么全部不完成,若过程中发生错误,则恢复到事务开始之前的那个状态。
- 一致性(consistency):事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性状态。不一致的例子:事务执行了一半,只有一部分的数据写入了数据库,然后发生故障,导致数据不一致。
- 隔离性(isolation):允许多个事务同时操作,但防止事务交叉执行导致数据的不一致。包括未提交读、已提交读、可重复读、串行化。
- 持久性(durability):事务结束之后,数据的储存就是永久的,不会丢失。
## 事务的隔离级别:
| | 脏读 | 不可重复读 | 幻读 |
| -------------------------- | :--: | ---------- | ---- |
| read uncommitted(未提交读) |是| 是 | 是 |
| read committed(已提交读) |否| 是 | 是 |
| repeatable read(可重复读)|否| 否 | 是 |
| serializable(串行化) |否| 否 | 否 |
## 并发事务存在的问题:
- 更新丢失:多个事务选择同一行数据,最后提交的事务覆盖了前面提交的事务数据,造成更新丢失
- 脏读:事务A读取到了事务B已修改,但未提交的数据。事务B回滚则数据不一致(不满足事务的一致性)
- 不可重复读:事务A读取一次数据后,事务B修改了这些数据,事务A再次读取这些数据时,发现数据不一致(不满足事务的隔离性)
- 幻读:事务A读取到了事务B提交后新增的数据(不满足事务的隔离性)
### 脏读、不可重复读、幻读的区别:
脏读:事务B还未提交的数据就被事务A读到了
不可重复读:事务B修改数据并提交,被事务A读到了
幻读:事务B新增、删除数据并提交,被事务A读到了 谢谢分享 学习了 做笔记的同时分享...后面还有计算机网络的笔记和jvm、juc,然后差不多秋招了 这个算啥呢,水帖子,还是做笔记啊 太专业了,我都不知道说的是啥{:301_1004:} fht000 发表于 2021-5-6 16:44
这个算啥呢,水帖子,还是做笔记啊
很明显的笔记啊,内容和百度的都不一样的,用自己的理解精简出来了 考你一下 能说下mysql 的innodb引擎是怎样实现可重复读的? lijiesuperwow 发表于 2021-5-26 15:00
考你一下 能说下mysql 的innodb引擎是怎样实现可重复读的?
大佬,这个还真不清楚,感觉MySQL这一块,就多理解了一下索引这些,更深入的没探究过...不做DBA的话,这一块需要深究一下不...感觉面试好像没问到这一块 逸帅 发表于 2021-5-26 16:56
大佬,这个还真不清楚,感觉MySQL这一块,就多理解了一下索引这些,更深入的没探究过...不做DBA的话,这 ...
说到Mysql事务必然要去了解下 mvcc原理,很有必要,知其然要知其所以然。 lijiesuperwow 发表于 2021-5-27 08:29
说到Mysql事务必然要去了解下 mvcc原理,很有必要,知其然要知其所以然。
好的好的,记下了,昨天面试也发现了这一块还是有短板的,我学完jvm和juc,针对这些我加强学习一下
页:
[1]