中间件速查手册
关系型数据库Transaction

事务 ACID 是什么?

一组操作要么全部成功,要么全部失败,且互不干扰

类比:转账,扣钱和加钱必须同时生效

四个字母的含义

这四个特性分别由不同机制保证,面试常问「靠什么实现」。

  • 原子性 A:undo log 记录反向操作,失败时回滚
  • 一致性 C:最终目标,由 A、I、D 和应用逻辑共同保证
  • 隔离性 I:锁 + MVCC
  • 持久性 D:redo log 顺序写,提交即落盘

两阶段提交

redo log 是 InnoDB 的,binlog 是 Server 层的,两者必须一致。MySQL 用两阶段提交:先写 redo 并标记 prepare,再写 binlog,最后 redo 标记 commit。崩溃恢复时据此判断是提交还是回滚。

长事务的危害

长事务会持有锁、撑大 undo log、阻碍 purge、拖慢主从。排查:information_schema.innodb_trx 里看 trx_duration,超过几十秒的都该审视。

它出现在这些中间件里

相关概念