ACID
| 特性 | 作用 | |
|---|---|---|
| Atomicity | 原子性 | 一个事务里N个操作当成一个整体去执行,一个事务里N个操作要么全部执行,要么都不执行。 |
| Consistency | 一致性 | 数据一致性 / 约束一致性 |
| Isolation | 隔离性 | 一个事务的执行不能被其他事务干扰 |
| Durability | 持久性 | 保存到磁盘 |
一、Atomicity 原子性
undo log则是事务原子性和隔离性实现的基础。
二、Isolation 隔离性
| 无隔离性所引发的问题 | |
|---|---|
| 脏读 | 一个事务读取到了另一个事务修改但未提交的数据 |
| 不可重复读 | 一个事务中多次读取同一行记录的结果不一致。 |
| 幻读 | 一个事务中多次按相同条件查询,结果不一致。后续查询的结果和面前查询结果不同,多了或少了几行记录。 |
| 隔离级别 | 解决问题 | |
|---|---|---|
| Read uncommitted | 读未提交 | |
| Read committed | 读已提交 | 脏读 |
| Repeatable read | 可重复读 | 不可重复读 |
| Serializable | 串行读 | 幻读 |
MVCC
读已提交 和 可重复读 两个隔离级别由MVCC实现。
而MVCC的实现其中就依赖了undo log。
三、Durability 持久性
Mysql持久化并不会先刷到磁盘,而是先写redo log再持久化到磁盘。
当Mysql故障时,可以读取redo log对数据进行恢复(并非可以全部恢复)。
四、Consistency 一致性
数据一致性:
是由原子性、持久性、隔离性共同保证的结果
本文详细解释了数据库事务的四个关键特性:原子性确保操作要么全部成功要么全部失败,一致性通过原子性和隔离性保证数据完整性,隔离性解决脏读、不可重复读和幻读问题,持久性涉及WAL日志和redolog在数据持久化中的角色。
966

被折叠的 条评论
为什么被折叠?



