贝利信息

什么是并发控制_mysql并发访问原理

日期:2026-01-26 00:00 / 作者:P粉602998670
并发控制由锁机制、MVCC和日志系统协同实现:锁机制通过S锁/X锁及行级粒度保障读写互斥;MVCC利用版本链与Read View实现无锁快照读;日志系统依靠undo log支持回滚与多版本,redo log确保崩溃恢复与持久性。

并发控制是 MySQL 保证多事务同时操作数据时不产生冲突、不破坏一致性的核心机制。它不是靠单一技术实现的,而是由锁机制MVCC(多版本并发控制)日志系统三者协同完成的。

锁机制:读写互斥的底层保障

MySQL 用两种基础锁协调并发访问:

锁的粒度分三层:表级锁(如 DDL 期间)、页级锁(InnoDB 索引页内)、行级锁(最常用,默认基于主键或唯一索引)。InnoDB 默认在符合条件时自动使用行锁,大幅减少锁争用。

MVCC:让读操作不加锁也能保持隔离

MVCC 是 InnoDB 在 READ COMMITTED 和 REPEATABLE READ 隔离级别下提升并发的关键。它不依赖锁来解决“读-写冲突”,而是通过保存数据的历史版本实现:

这就解释了为什么在可重复读下,同一事务中多次 SE

LECT 同一行结果不变——它看到的是事务开始那一刻的快照,而非最新值。

日志系统:确保原子性与持久性的支撑

锁和 MVCC 解决的是“怎么读、怎么写不冲突”,而日志系统保障“写到底成没成、出错能不能回”:

二者配合,使事务既能安全地并发执行,又能在异常时准确还原状态。

不同操作对应哪种并发行为

理解实际场景有助于掌握原理: