当前位置: 首页 > news >正文

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,导致“锁太重、表太粗、事务太弱”,并发性能差、数据一致性差、系统稳定性差,难以支撑现代高并发业务。

http://www.dtcms.com/a/347037.html

相关文章:

  • CSS变量
  • k8sday15
  • 【typenum】 24 去除尾部零的特性(private.rs片段)
  • [激光原理与应用-320]:结构设计 - Solidworks - 软件工具UI组织的核心概念
  • 【软件设计模式】策略模式
  • 【MongoDB与MySQL对比】
  • 【React ✨】从零搭建 React 项目:脚手架与工程化实战(2025 版)
  • SpringBoot applicationContext.getBeansOfType获取某一接口所有实现类,应用于策略模式
  • Claude Code快捷键介绍(Claude Code命令、Claude Code指令、Claude Code /命令、Claude命令、Claude指令)
  • GEO优化供应商:AI搜索时代的“答案”构建与移山科技的引领,2025高性价比实战指南
  • LeetCode Hot 100 第二天
  • GaussDB 数据库架构师修炼(十八) SQL引擎-计划管理-SQL PATCH
  • MSPM0G3507环境搭建
  • 【基础-判断】设计师在设计动效时,点击响应性、运动帧率、跟手性不需要设定,根据不同机型的性能能力系统设定即可
  • 以太坊智能合约地址派生方式:EOA、CREATE 和 CREATE2
  • 水泉村信息化服务小程序的设计与实验
  • kettle从入门到精通 第105课 ETL之kettle 解决api接口无返回页数和记录数的分页问题
  • 1.10 本地模型调用编码实战(一)
  • Flink框架:算子链的介绍
  • 梯度下降(线性回归为例)
  • 深度学习入门:神经网络
  • 【KO】前端面试题六
  • Idea中 lombok 在“测试类中-单元测试”运行失败及解决方法
  • 怎样避免游戏检测到云手机?
  • C++矩阵类设计与实现:高效、健壮的线性代数工具
  • 文字学的多维透视:从符号系统到文化实践
  • 解密 Kubernetes 权限管理:supplementalGroups 的魔力与 fsGroup 的选择
  • Linux服务器systemd服务配置详细指南
  • 【线程池】ThreadPoolTaskExecutor和redis的配置案例
  • 《UE教程》第一章第十一回——UE5.6打包安卓