mysql 事务 mvcc_MySQL事务和MVCC

mysql具有分层的架构

存储引擎和服务层通过API进行交互

事务日志

存储引擎在修改数据时只需要修改其内存拷贝

并将修改记录持久化到硬盘上的事务日志中,事务日志采用的是追加的方式,因此写日志是操作磁盘上一块区域内的顺序I/O,速度很快

内存修改的数据在后台可以慢慢刷回磁盘

预写式日子

大部分存储引擎都是这样

修改数据需要写入2次磁盘

事务

1.自动提交

默认一条sql上自动提交

SHOW VARIABLEES LIKE ‘AUTOCOMMIT'

2.事务中混合使用存储引擎

不可靠,MyISAM数据无法回滚

3.显式和隐式锁定

默认隐式COMMIT或者ROLLBACK会释放锁

select .. lock in share mode

select .. for update

不要显式lock tables

多版本并发控制

MVCC

大多数事务性存储引擎实现的都不是简单的行级锁,而是基于并发性能的考虑使用MVCC

保存数据在某个时间的快照来实现

每行数据都会多2列,这两列如下,存的内容都是系统版本号

create_time

delete_time

系统版本号

系统版本号

select

1.判断create_time, 行的系统版本号 <= 当前事务的系统版本号

2.判断delete_time, 行的删除版本为定义 || 大于当前事务版本号

update

插入一条新纪录,更新create_time

删除一条数据,并更新delete_time

insert

更新create_time

delete

更新delete_time

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值