mysql没有mvcc之前遇到了什么问题

MySQL 的 MVCC(Multi-Version Concurrency Control,多版本并发控制) 是 InnoDB 存储引擎实现高并发事务的核心机制之一。它通过为每行数据维护多个版本,避免读写冲突,实现“读不阻塞写,写不阻塞读”,从而提高数据库的并发性能。

在 MySQL 5.1 之前,早期版本的 InnoDB 存储引擎功能较弱,缺乏行级锁外的并发控制优化,表压缩和分区支持不完善。MyISAM 是默认引擎,但不支持事务和崩溃恢复,容易导致数据损坏。

InnoDB 并发控制主要依赖锁机制,这导致了一系列显著的问题,具体表现如下:

✅ 1. 读写互相阻塞,并发性能差

  • 没有快照读(Snapshot Read),所有一致性读都必须加 共享锁(S锁)

  • 写操作需要 排他锁(X锁),与读锁互斥。

  • 结果是读阻塞写、写阻塞读,高并发下性能急剧下降

✅ 2. 默认存储引擎 MyISAM 不支持行锁

  • MySQL 5.1 之前默认使用 MyISAM 存储引擎。

  • MyISAM 只支持 表级锁,即:

    • 写操作(INSERT/UPDATE/DELETE)会锁住整张表。

    • 读操作(SELECT)也会阻塞写操作,反之亦然。

  • 并发读写场景下性能极差,不适合高并发 OLTP 系统

✅ 3. 无事务隔离级别支持,数据一致性问题严重

  • MyISAM 不支持事务,无法解决以下经典并发问题

 ✅4. 死锁与锁等待频繁

  • 仅靠锁机制,多个事务交叉访问资源时极易形成死锁

  • 没有 MVCC 的“读不阻塞写”机制,锁竞争严重,死锁检测和回滚开销大

✅ 5. 长事务阻塞严重

  • 由于读也要加锁,长查询(如报表)会长时间锁住表,阻塞所有写操作。

  • 无法像 MVCC 那样提供一致性快照读,导致线上业务容易被拖垮

✅ 6. 崩溃恢复能力差

  • MyISAM 不支持崩溃恢复,一旦宕机,表容易损坏,数据可能丢失

🔍 总结一句话:

MySQL 5.1 之前没有 MVCC,导致“锁太重、表太粗、事务太弱”,并发性能差、数据一致性差、系统稳定性差,难以支撑现代高并发业务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值