暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
资深架构大佬分享:MySQL InnoDB 存储引擎大观.pdf
158
16页
0次
2023-05-23
5墨值下载
2020/2/12 资深架构大佬分享:MySQL InnoDB 存储引擎大观
https://www.toutiao.com/a6711948901122834948/ 1/16
资深架构大佬分享:MySQL InnoDB 存储引擎大观
JAVA架构师之路 2019-07-10 16:29:42
MySQL InnoDB 引擎现在广为使用,它提供了事务,行锁,日志等一系列特性,本文分析下 InnoDB的内部实
现机制,MySQL 版本为 5.7.24,操作系统为 Debian 9。MySQL InnoDB 的实现非常复杂,本文只是总结了
一些皮毛,希望以后能够研究的更加深入些。
一、InnoDB 架构
2020/2/12 资深架构大佬分享:MySQL InnoDB 存储引擎大观
https://www.toutiao.com/a6711948901122834948/ 2/16
InnoDB 的架构分为两块:内存中的结构和磁盘上的结构。InnoDB 使用日志先行策略(WAL),将数据修改先
在内存中完成,并且将事务记录成重做日志(Redo Log),转换为顺序 IO 高效的提交事务。这里日志先行,
说的是日志记录到数据库以后,对应的事务就可以返回给用户,表示事务完成。但是实际上,这个数据可能还
只在内存中修改完,并没有刷到磁盘上去。内存是易失的,如果在数据落地前,机器挂了,那么这部分数据就
丢失了。
InnoDB 通过 redo 日志来保证数据的一致性。如果保存所有的重做日志,显然可以在系统崩溃时根据日志重建
数据。当然记录所有的重做日志不太现实,所以 InnoDB 引入了检查点机制。即定期检查,保证检查点之前的
日志都已经写到磁盘,则下次恢复只需要从检查点开始。
二、InnoDB 内存中的结构
内存中的结构主要包括 Buffer Pool、Change Buffer、Adaptive Hash Index 以及 Log Buffer 四部分。如果
从内存上来看,Change Buffer 和 Adaptive Hash Index 占用的内存都属于 Buffer Pool,Log Buffer占用的
内存与 Buffer Pool独立。
1,Buffer Pool
缓冲池缓存的数据包括 Page Cache、Change Buffer、Data Dictionary Cache 等,通常 MySQL 服务器的
80% 的物理内存会分配给 Buffer Pool。
基于效率考虑,InnoDB 中数据管理的最小单位为页,默认每页大小为16KB,每页包含若干行数据。为了提高
缓存管理效率,InnoDB 的缓存池通过一个页链表实现,很少访问的页会通过缓存池的 LRU 算法淘汰出去。
InnoDB 的缓冲池页链表分为两部分:New sublist(默认占5/8缓存池)和 Old sublist(默认占3/8缓存池,
可以通过 innodb_old_blocks_pct 修改,默认值为 37),其中新读取的页会加入到 Old sublist 的头部,而
Old sublist 中的页如果被访问,则会移到 New sublist 的头部。缓冲池的使用情况可以通过 show engine
innodb status 命令查看。其中一些主要信息如下:
2,Change Buffer
通常来说,InnoDB 辅助索引不同于聚集索引的顺序插入,如果每次修改二级索引都直接写入磁盘,则会有大量
频繁的随机 IO。Change buffer 的主要目的是将对非唯一 辅助索引页的操作缓存下来,以此减少辅助索引的随
机 IO,并达到操作合并的效果。它会占用部分 Buffer Pool 的内存空间。在 MySQL 5.5 之前 Change Buffer
其实叫 Insert Buffer,最初只支持 insert 操作的缓存,随着支持操作类型的增加,改名为 Change Buffer。如
果辅助索引页已经在缓冲区了,则直接修改即可;如果不在,则先将修改保存到 Change Buffer。Change
Buffer 的数据在对应辅助索引页读取到缓冲区时合并到真正的辅助索引页中。Change Buffer 内部实现也是使
用的 B+ 树。
of 16
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜