分布式事务
1、分布式事务:
局部事务:仅访问和更新一个数据库中数据的事务。
全局事务:访问、更新多个数据库中数据的事务,也称为分布式事务。通常由一个主事务和在不同站点上执行的子事务(局部事务)构成。
平面事务、嵌套事务
基于消息传递的一致性算法,主要解决分布式环境的一致性问题
1、数据库领域:强调系统中所有的数据的状态一致
2、NoSql领域:强调读写一致,能读到到最后写入的数据
3、状态机:强调在初始状态一致的状态机上执行相同的序列操作后,每个状态机的状态必须保持一致,即顺序一致性
采用多副本(高容错)进行可更改数据的存储
多个副本必须执行相同的更新操作序列
2、事务的基本概念:
指作为单个逻辑工作单元执行的一系列操作。
一个逻辑工作单元要成为事务,必须满足ACID:
原子性(Atomicity)
一致性(Consistency)
隔离性(Isolation)
持久性(Durability)
3、并发对事务的影响:
事务ACID性质可能遭到破坏的因素有:
多个事务并发运行时,不同事务的操作交叉执行
事务在运行过程中被强行终止
并发操作带来的数据不一致性包括:
丢失数据
不可重复读
读“脏”数据
4、并发控制:
为保持多事务并发时事务的隔离性,系统必须提供一系列的机制来控制并发事务的相互作用。
任务:
保证事务的隔离性和一致性
并发操作进行正确的调度
机制:
封锁协议:两阶段封锁
时间戳排序
有效性检查
多版本控制
5、事务故障
分类:
逻辑错误、系统错误
事务故障恢复应该由系统自动完成,对用户透明
恢复步骤:
反向扫描日志,查找该事务的更新操作
对事务的更新操作执行逆操作
继续反向扫描日志,查找该事务的其他更新操作,并做同样处理,直至独到该事务的开始标记