(三)Mysql InnoDB 架构全解

1. InnoDB总体架构

在这里插入图片描述
我们先看一下内存结构。

1.1 内存结构

Buffer Pool主要分为3个部分: Buffer Pool. Change Buffer、Adaptive Hash Index, 另外还有一个 (redo) log buffer

1.1.1 Buffer Pool

Buffer Pool缓存的是页面信息,包括数据页、索引页。
Buffer Pool默认大小是128M (134217728字节),可以调整。
査看系统变量:

SHOW VARIABLES like '%innodb_buffer_pool%';

查看服务器状态,里面有很多跟Buffer Pool相关的信息:

SHOW STATUS LIKE '%innodb_buffer_pool%';

这些参数都可以在官网查到详细的含义,用搜索功能。
https://dev.mvsQl.eom/doc/refman/5.7/en/server-svstem-variables.html

内存的缓冲池写满了怎么办? (Redis设置的内存满了怎么办?)InnoDB用LRU 算法来管理缓冲池(链表实现,不是传统的LRU,分成了 young和old),经过淘汰的数据就是热点数据。

1.1.2 LRU 算法

LRU算法可以百度下,后期会单独写一篇文章

1.1.3 Change Buffer 写缓冲

Change Buffer 是 Buffer Pool 的一部分。
如果这个数据页不是唯一索引,不存在数据重复的情况,也就不需要从磁盘加载索引页判断数据是不是重复(唯一性检查)。这种情况下可以先把修改记录在内存的缓冲 池中,从而提升更新语句(Insert. Delete. Update)的执行速度。
这一块区域就是Change Buffero 5.5之前叫Insert Buffer插入缓冲,现在也能支持 delete 和 update。

1.1.4 Adaptive Hash Index

1.1.5 Redo Log Buffer

未完待续

猜你喜欢

转载自blog.csdn.net/nonage_bread/article/details/112847353