Skip to content

MySQL

关键词

  • MVCC
  • redo log
  • undo log
    • MVCC
    • 事务回滚
  • binlog
  • 行锁 for update
  • 间隙锁
  • 临键锁(行锁+间隙锁)

MySQL InnoDB 的 MVCC 和锁策略

锁类型阻塞其它事务写阻塞其它事务加锁读(FOR SHARE/FOR UPDATE)阻塞普通读(MVCC)
FOR SHARE是(阻塞 FOR UPDATE)
FOR UPDATE是(阻塞 FOR SHARE 和 FOR UPDATE)
普通 SELECT

事务隔离级别

不可重复读、幻读

undo log/redo log/binlog/MVCC 怎么配合工作

步骤发生在哪儿内容
事务开始事务管理器生成事务 ID,快照版本
修改前备份Undo Log备份旧数据,支持回滚和 MVCC 快照
修改数据行数据页(内存/磁盘)写新版本,设置事务 ID 和 undo 指针
生成 Redo Logredo log 缓冲区物理页变更记录,保证崩溃恢复
提交事务redo log + binlog(MySQL Server 层)持久化 redo log;写 binlog 供复制(主从同步)和恢复
事务提交后释放锁其他事务才能读取或修改这些数据
读操作MVCC+undo log读快照版本,不阻塞写