栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【MVCC与BufferPool缓存机制】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【MVCC与BufferPool缓存机制】

一、Redo与Undo 日志详解

概述:innodb读已提交、可重复读实现了mvcc

Undo日志用于  现实MVCC多版本并发控制机制

Redo日志是顺序写,效率比直接写数据库表文件要高。用于故障后恢复BufferPool

【Unodo日志版本链与Read View机制】

一致性视图read-viw 

    可重复读隔离级别开启后,查询sql会生成当前事务的一致性视图read-viw ,在事务结束前不会变化

    读已提交,在每次执行查询sql时都会重新生成

 

二、Innodb引擎BufferPool缓存机制

个人理解:BufferPool缓存 ,可以理解为Mysql重写了磁盘缓存PageCache(一页4k) ,BufferPool加载mysql页 (一页16k),并用Mysql IO线程随机刷盘替代了 PageCache刷盘

事务修改表数据流程:

    按页加载数据到BufferPool缓存

    修改Undo日志

    更新BufferPool内存数据

    写Redo日志 , Redo Log Buffer  

    事务commit,Redo日志写入磁盘  (宕机场景,Redo日志用于恢复BufferPool里的数据,BufferPool随机刷入磁盘)

    写binlog (Server层日志,非引擎层)日志,所有存储引擎都要写binlog日志

    写commit事务成功标记,Redo日志与binlog日志同步

    Mysql IO线程 ,随机以page为单位写入磁盘,也就是将BufferPool中 page刷到磁盘上

 

 

Mysql不建议使用查询缓存的原因:

因为查询缓存失效非常频繁,只要对一个表有更新,这个表上所有的查询缓存都会被清空。

对于更新频繁的数据库来说,缓存命中率非常低。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/750010.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号