MVCC与MySQL各大引擎介绍

本文介绍了MySQL中的MVCC多版本并发控制机制,用于InnoDB引擎的并发控制。同时,对比了MyISAM、Archive、CSV、Memory和NDB等多种引擎的特点,如MyISAM适用于只读数据库,InnoDB支持行锁和事务,Archive引擎适合日志存储,CSV引擎便于导入CSV数据,而Memory引擎数据存储在内存中。
摘要由CSDN通过智能技术生成

MVCC

多版本并发控制是mysql的innodb采用的并发控制方案,在可重复读下默认使用该并发控制方案
原理:

  • MySQL全局维护一个递增版本号
  • 表结构有两个隐藏的列,分别代表 初始化时版本 和 过期时版本
  • 新增一条记录时——物理写入一条新数据,设置初始化版本为当前Mysql版本号,过期时版本为空
  • 更新一条记录时——将旧的物理数据行的过期时版本设置为当前Mysql版本号,不改动旧物理数据,重新物理写入一条新纪录,初始化版本填写当前Mysql版本号,新物理数据使用更新后的数据
  • 删除一条记录——将数据库保存的该主键对应的最新一条物理数据(过期时版本为空)的记录的过期时版本设置为当前Mysql版本号
  • 查询数据——找到 【过期时版本为空】 或者 【初始化版本<=当前mysql全局版本 并且 过期时版本>= 当前mysql全局版本】 的数据

总结:通过多条记录,多版本,只做增量的方式来保证可重复读和并发控制(版本校验)

myisam引擎

索引和数据分开在两个文件,因此支持行锁性能不好保障,所以没有设计支持行锁和事务
崩溃后数据恢复困难
但是myisam的存储是紧密存储,结构简单,适用于只读数据库(一经导入不再修改),可以提高更好的性能
对其进行压缩后得到压缩表,一般用于只读数据

Innodb

b+树存储索引和数据,叶节点就是数据
支持行锁和

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值