底层机制Mvcc

隔离级别实现原理(MVCC)

MVCC(多版本并发控制Multi-Version Concurrent Control)是MySql提高性能的一种方式,配合Undo log和版本链,让不同的事物的读-写,写-丢操作可以并发执行,从而提升系统性能.

MVCC使得数据库读不会对数据加锁,普通的SELECT请求不会加锁,提高了数据的并发处理能力.借助MVCC,数据库可以实现(读已提交)READ COMMITTED,(可重复读)REPETABLE READ等隔离级别.

InnoDB的MVCC是通过在每行记录后面保存两个隐藏的列来实现的,一个保存了行的事物Id(DB_TRX_ID),一个保存了行的回滚指针(DB_ROLL_PT).

db_trx_id:每次对某条聚簇索引记录进行改动时,都会把对应的事务id赋值给trx_id隐藏列.

db_roll_pt:每次对某条聚簇索引记录进行改动时,都会把旧的版本写入到undo log 日志中,然后这个隐藏列相当于一个指针,可以通过它来找到该记录修改前的信息.

ReadView

Read View是事务开启时,当前所有事务的一个集合,这个数据结构中存储了当前Read View中最大的ID及最小的ID

对于使用READ UNCOMMITTED(读未提交)隔离级别的事务来说,直接读取最新版本就好,对于使用SERIALIZABLE(串行化)隔离级别的事务来说,使用加锁的方式来访问记录.

对于使用READ COMMITTED(读已提交)和REPETABLE READ(可重复读),就需要用到版本链,核心问题:需要判断一个版本链中的那个版本是当前事务可见的.

ReadView:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值