KANG's BLOG

Let's have some fun

InnoDB的事务和崩溃恢复

1 事务提供的安全保证 1.1 ACID特性 为保证事务(transaction)是正确可靠的,数据库引擎必须具备的四个特性: 原子性(Atomicity) 事务内的一系列操作应该是否一个整体单元,不存在中间态,或者说中间态对外不可见。 一致性(Consistency) 在ACID理论中,一致性主要是指对数据有特定的预期状态,任何数据更改必须满足这些状态约束(或者恒等条件)。但是,一致性并不是数据库自身的特性,而是通过满足原子性和隔离性而达到的效果。 隔离性(Isolation) 指代并发事务相互执行相互隔离,互不影响。

RocketMQ如何实现事务

RocketMQ的事务 RocketMQ保证的是本地事务和发送消息这二者,要么都成功,要么都失败。 如何实现 producer端 producer发送一个“半消息”到broker 然后执行本地事务,调用endTransaction()方法,根据执行结果发送单向rpc请求通知broker完成事务提交或者回滚 broker端 接收到消息根据消息类型,如果是“半消息”,则存放在单独队列中,并定时轮询这些消息去反查producer的本地事务的结果 接收到事务提交或回滚的通知,或者完成反查后,把“半消息”标记为已处理 如果提交,则把消息复制到其真正的主题和队列中去;如果回滚则直接结束事务。