好友
阅读权限20
听众
最后登录1970-1-1
|
逸帅
发表于 2021-5-6 16:15
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读到了
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|