浅识ACID

文章目录


引言

ACID是关系型数据库事务的四大特性, 即原子性 (Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)

首先来看事务, 事务是一组原子性的sql执行单元, 要么全部执行成功(commit),要么全部执行失败(rollback)。而要保证事务的这种特性, 就必须借助于ACID。换一种说法, 借助于ACID, 关系型数据库的事务操作实现了CAP理论中的CA, 即一致性和可用性。


ACID特性

1.原子性(Atomicity)

单个事务,为一个不可分割的最小工作单元,整个事务中的所有操作要么全部commit成功,要么全部失败rollback,对于一个事务来说,不可能只执行其中的一部分SQL操作,这就是事务的原子性。

例如A和B原来分别有1000块钱, 现在A要去银行转账两百块给B。这个过程包含两个步骤:

  1. A: 1000-200=800
  2. B: 1000+200=1200

原子性可以保证这两个步骤一起成功,或者一起失败,不能只发生其中一个动作。


2.一致性(Consistency)

数据库总是从一个一致性的状态转换到另外一个一致性的状态。换句话说就是一致性保证了事务在执行完前,因为事务最终没有提交,所以事务中所做的修改也不会保存到数据库中,保证数据一致性。

还是上面的例子: A和B原来分别有1000块钱, 现在A要去银行转账两百块给B。这个过程包含两个步骤:

  1. A: 1000-200=800
  2. 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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值