ACID--事务四大特性

简介: ACID,指的是在数据库事务正确执行的四个基本要素的缩写。 具体解释:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

ACID,指的是在数据库事务正确执行的四个基本要素的缩写。
具体解释:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)
任何一个数据库事物都 必须满足 ACID,只有这样才能保证在事务执行过程中的正确性

接下来我们逐条解释:

原子性(Atomicity)

原子性其实非常好理解,我认为它指的就是一种完整性,就是说任何一个具备原子性的事务只有两种状态:完成操作 和 未操作。原子性保证事务的一切操作要么一起成功要么一起失败。原子性的事务一旦开始就一直运行到结束,它不会被线程调度机制中断。如果遇到强制性中断,就会全部回滚到最初未操作的状态。还有一种说法是“原子操作(atomic operation)是不需要synchronized

一致性(Consistency)

这个是数据库事物的核心,它是数据库最基本的特性。这条特性看起来简单,但是理解起来还是比较复杂的。
它的书面定义是:数据库一致性(Database Consistency)是指事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
它分为两个方面:一致读一致写
一致读:事务读取数据只能从一个状态中读取,不能从2个或者2个以上状态读取。
一致写:事务执行的数据变更只能基于上一个一致的状态,且只能体现在一个状态中。
具体解释请认真参看并理解 知乎 如何理解数据库事务中的一致性的概念?徐志斌的回答

隔离性(Isolation)

数据并发读写中存在三大致命的问题:
脏读问题
例:A 向 B 传送数据,A 传送操作还未完成提交 B 就接受并更新了自己的数据,如果此时 A 遇到问题回滚了,那么 B 的数据就变成了脏数据(垃圾数据)

不可重复读问题
在一个事务中,对于同一份数据的读取结果总是相同的,无论是否有其他事务对这份数据进行操作,以及这个事务是否提交
例:A 事务是读取两次数据,B 事务是修改数据,两个事务操作同一数据,恰好 B 事务发生在 A 事务两次读取之间,导致 A 两次读取结果不一致。这其实看似合情合理,其实是不被允许的,因为某些情况下一个事务对同一数据做同一操作的结果不一致会导致 bug

幻读问题
在同一个事务中,同一个查询多次返回的结果不一致。(注意与不可重复读问题的区别)
例:A 事务统计银行总存款数,B 事务是某一用户存款,如果 A 事务连续查两次结果不一致就是幻读。试想一下,银行如果存在幻读问题那可就有大麻烦了

隔离性按照级别分为四级(从上至下,隔离度越高)
READ_UNCOMMITTED(读未提交):
这个级别最低,安全系数最低,会导致一切并发性问题

READ_COMMITTED (读已提交):
在这个安全系数下就解决了脏读问题

REPEATABLE_READ(可重复读):
在一个事务中,对于同一份数据的读取结果总是相同的,无论是否有其他事务对这份数据进行操作,以及这个事务是否提交。它解决了脏读不可重复读问题

SERIALIZABLE(序列化):
这个就比较简单粗暴了,直接为了安全取消并发,一次只能执行一个事务

持久性(Durability)

就是说任何执行成功的事务修改后的数据都要保证永久的保存在数据库系统中,能够时刻记录系统的状态,并且保证发生故障后能够恢复

目录
相关文章
|
6月前
|
SQL 存储 关系型数据库
数据库事务——事务的特性(ACID)
数据库事务——事务的特性(ACID)
112 0
|
4月前
|
数据库
认识事务的ACID 特性
认识事务的ACID 特性。
18 0
|
9月前
|
数据库
分布式事务的四大特性和隔离级别
分布式事务是指在分布式系统中执行的涉及多个数据库或资源的事务。由于分布式环境中存在网络故障、节点故障等不可靠因素,因此需要采取一定的机制来保证分布式事务的一致性和可靠性。
216 0
|
9月前
|
存储 数据库
数据库事务与特性
数据库事务与特性
37 0
|
6月前
|
Oracle 关系型数据库 MySQL
23JavaWeb基础 - 事务的特性
23JavaWeb基础 - 事务的特性
31 0
|
SQL 关系型数据库 MySQL
事务的四大特性(ACID)| 学习笔记
快速学习事务的四大特性(ACID)。
事务的四大特性(ACID)| 学习笔记
|
SQL 关系型数据库 MySQL
事务的ACID特性,4种隔离机制和7种传播行为
事务的ACID特性,4种隔离机制和7种传播行为
123 0
|
存储 关系型数据库 MySQL
事务的 ACID 特性|学习笔记
快速学习事务的 ACID 特性
84 0
|
SQL 关系型数据库 MySQL
事务的四大特性(ACID)|学习笔记
快速学习事务的四大特性(ACID)
事务的四大特性(ACID)|学习笔记
|
存储 SQL Oracle
事务的ACID特性
本篇文章主要介绍事务机制: 1. 对事务进行控制 2. 事务的ACID特性
196 0