MVCC机制及BufferPool缓存机制

本文详细介绍了MySQL的MVCC多版本并发控制机制,包括undo日志版本链和read view的工作原理,以及在不同隔离级别下的应用。同时,文章还探讨了Buffer Pool缓存机制,解释了其如何提高数据库性能并确保数据一致性。
摘要由CSDN通过智能技术生成

MVCC多版本并发控制机制

        MySQL在可重复读的隔离级别下查询语句在一个事务下多次执行的查询结果相同,就算其他事务对数据做了修改也不会改变当前事务的查询结果,这个隔离性就是由MVCC(Mutil-Version Concurrency Control)实现的,对一行记录的读和写是不会通过加锁互斥来保证隔离性的,避免了频繁加锁互斥。而在可串行化隔离级别为了保证隔离性,所有的操作都是通过加锁互斥来实现的。

        MySQL在读已提交和可重复读隔离级别下都实现了MVCC机制。

undo日志版本链与read view机制

        undo日志版本链是指一行记录被多个事务依次修改后,在每个事务修改完成后,MySQL都会保留修改前的数据undo回滚日志,并且用两个隐藏字段trx_id和roll_pointer把这些undo日志串联起来形成一个历史记录版本链。

          在可重复读隔离级别,当事务开启时,执行任何查询的语句时会生成当前事务的一致性试图read-view,该视图在事务结束前不会发生变化(如果时读已提交级别在每次执行查询时会重新生成),这个试图由执行查询时所有未提交事务id数组(数组里最小的id为min_id)和已创建的最大事务id(max_id)组成,比如当前未提交的最小事务id为10,最大未提交事务id为50,已创建的最大事务id为80且80的事务已提交,此read-view视图为[10,50],80。事务里的任何查询结果需要从对应版本链里

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值