常青笔记
概念
ACID
A (Atomicity) 原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样
C (Consistency) 一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的
I (Isolation)隔离性:一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰
D (Durability) 持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
本地事务
比如可以通过锁、时间序列等机制保障操作的顺序执行,让系统实现 ACID 特性
分布式事务
如何保证分布式下的呢?分布式事务协议,比如二阶段提交协议和 TCC(Try-Confirm-Cancel)等 你可以将 ACID 特性理解为 CAP 中一致性的边界,最强的一致性,也就是 CAP 的酸(Acid)。根据 CAP 理论,如果在分布式系统中实现了一致性,可用性必然受到影响。比如,如果出现一个节点故障,则整个分布式事务的执行都是失败的。实际上,绝大部分场景对一致性要求没那么高,短暂的不一致是能接受的,另外,也基于可用性和并发性能的考虑,建议在开发实现分布式系统,如果不是必须,尽量不要实现事务,可以考虑采用强一致性或最终一致性 2PC