概念
事务是一个抽象的概念;是一系列指令(操作)的集合;而这些指令可以访问或更新数据库;
四大特性(ACID)
事务有四个特性 :原子性,一致性,隔离性,持久性
原子性 Atomicity
事务的执行结果,要么全部成功,要么全部失败回滚;不存在中间状态;
注意:- 这里中间状态指的是事务执行完成后的结果不可能是中间状态(即部分成功或部分失败)
- 在事务执行过程中是存在部分成功状态的,只是当在后续的执行过程中,倘若遇到了失败状态,那么之前的部分成功状态将被回滚,导致整个事务被回滚
栗子:银行转账
A有500,B有200
A转账B 300
最终的结果只有两个
要么转账成功,A剩200,B变500
要么转账失败,A,B余额都不变一致性 Consistency
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态
栗子:银行转账
同样的栗子
A有500,B有200
A转账B 300
最终的结果只有两个
要么转账成功,A减去300剩200,B加上300变500
要么转账失败,A,B余额都不变
不可能存在以下情况- 转账成功,A减去300剩200,而B只得到200变400或其他情况,这样在转账(即是一个事务)前后,数据就出现了不一致
- 转账失败,A,B余额发生变化,数据就出现了不一致
也就是说,不管转账(事务)成功或失败,A,B的余额加起来一定是700
原子性与一致性的分析- 原子性侧重于事务执行过程的完整性(过程要么全部成功,要么全部失败)
- 一致性侧重于事务结果的完整性(不论执行过程是否成功,结果(即数据)不会因过程而发生“ 缺失”)
- 再使用上面的的转账栗子,倘若转账成功,但是A,B余额加起来不是700,那么这符合了事务的原子性,却违背了事务的一致性
- 原子性与一致性是互补的,不可分离
- 隔离性 Isolation
各个事务之间是相互独立,互不影响的 - 持久性 Durability
事务提交以后,数据是永久保存在系统(数据库)中的,即使发生断电等故障
参考文章
https://blog.csdn.net/u011389474/article/details/53424476
https://blog.csdn.net/qiuwenjie123/article/details/78931078