浅识ACID
作者:互联网
文章目录
引言
ACID是关系型数据库事务的四大特性, 即原子性 (Atomicity)
、 一致性(Consistency)
、隔离性(Isolation)
和 持久性(Durability)
。
首先来看事务, 事务是一组原子性的sql执行单元, 要么全部执行成功(commit),要么全部执行失败(rollback)
。而要保证事务的这种特性, 就必须借助于ACID
。换一种说法, 借助于ACID, 关系型数据库的事务操作实现了CAP理论中的CA, 即一致性和可用性。
ACID特性
1.原子性(Atomicity)
单个事务,为一个不可分割的最小工作单元,整个事务中的所有操作要么全部commit成功,要么全部失败rollback,对于一个事务来说,不可能只执行其中的一部分SQL操作,这就是事务的原子性。
例如A和B原来分别有1000块钱, 现在A要去银行转账两百块给B。这个过程包含两个步骤:
- A: 1000-200=800
- B: 1000+200=1200
原子性可以保证这两个步骤一起成功,或者一起失败,不能只发生其中一个动作。
2.一致性(Consistency)
数据库总是从一个一致性的状态转换到另外一个一致性的状态。换句话说就是一致性保证了事务在执行完前,因为事务最终没有提交,所以事务中所做的修改也不会保存到数据库中,保证数据一致性。
还是上面的例子: A和B原来分别有1000块钱, 现在A要去银行转账两百块给B。这个过程包含两个步骤:
- A: 1000-200=800
- B: 1000+200=1200
一致性可以保证事务完成后,符合逻辑运算。
3.隔离性(Isolation)
同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。
比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。
4.持久性(Durability)
一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。
举例: 操作前A:800,B:200 操作后A:600,B:400
如果在操作前(事务还没有提交)服务器宕机或者断电,那么重启数据库以后,数据状态应该为 A:800,B:200
如果在操作后(事务已经提交)服务器宕机或者断电,那么重启数据库以后,数据状态应该为 A:600,B:400
标签:200,事务,数据库,浅识,一致性,ACID,1000 来源: https://blog.csdn.net/qq_49723651/article/details/122578499