首先说一下,我理解的事务
- 事务出现的原因,或者说事务要解决的问题
-
- 生活中,我给你转账(现金方式)100块,这是一件事儿
- 数据库中,我给你转账100块,这是两件事儿,一件是我账户的钱要减少100,你的账户要加100
- 因为数据库和生活中不同,数据库中的两件事儿执行有先后顺序,就有可能只对我的账户减少100,这时候系统突然停止运行,就会导致你的账户没有增加100,那么这就很不合理。
- 所以事务出现了,事务保证了转账过程一旦发生,这两件事儿都会发生。
- 事务是什么?事务是几件事儿的集合
- 事务的四大特性ACID的含义
1.原子性(Atomicity):事务中的所有操作作为一个整体像原子一样不可分割,要么全部成功,要么全部失败。用上边的例子来说,我的账户减少100,和你的账户增加100,这两件事儿要么都完成,要么都不完成。以事务的方式,保证了数据库中的操作能和现实生活中的逻辑一样。
2.一致性(Consistency):事务的执行结果必须使数据库从一个一致性状态到另一个一致性状态。这点有些绕口,通俗的说,就是必须符合现实世界中的逻辑,比如转账,前后我们的总金额加起来不变。
3.隔离性(Isolation):这个是针对多用户操作的情况,就是多个转账行为同时进行时,你转你的,我转我的,我们之间互不影响。如果同一时间,有好多向你借钱的和好多向你还钱的,那么可能导致你也不知道借给谁多少钱,谁还了你多少钱。事务要能够保证这么多转账之间不会受到影响,得到一个正确的结果。
4.持久性(Durability):事务一旦提交,那么对数据库的影响就是永久的。对比现实,就是如果发生一单交易,不管是否交易成功,肯定会出现两种情况,要么交易成功,要么交易失败,不会出现没有这一交易的情况。
- 总结,事务是为了描述现实世界。