MySQL 的 InnoDB 缓冲池里有什么?

缓冲池的配置

以下配置的意思,缓冲池在内存中的大小为20M;只有1个缓冲池实例;每一块的大小,插入缓冲占的百分比

# InnoDB 缓存池配置
innodb_buffer_pool_size = 20M
innodb_buffer_pool_instances = 1
innodb_buffer_pool_chunk_size = 2M

# InnoDB 插入缓冲配置
innodb_change_buffer_max_size = 25

在我们启动mysqld的时候,日志中会打印InnoDB的初始化信息

在这里插入图片描述

介绍一张表 INNODB_BUFFER_POOL_PAGES

它是InnoDB存储引擎的一个缓存池页的信息表,用于显示 InnoDB 缓冲池中各页的信息,是一个临时表,没有主键,生产上别随便用。

查询这个表的数量1280个数据,算一下,InnoDB 的一页是 16k,1280 * 16k = 20480k;刚好就我们配置的 20M;在MySQL启动的时候,它就会把配置的所有的缓存池空间分成页,放到这个数据表里面。
在这里插入图片描述

字段解释

POOL_ID: 缓冲池的 ID。指缓冲池的编号。是代表当前这个页属于哪一个缓存池实例,innodb_buffer_pool_instances如果设置为2,就能看到这个字段值有0和1;我们设置了只有1个缓冲池实例,所以只有一个缓冲池实例0
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4d027e1df28343489640e1db2a8e02fb.png

BLOCK_ID: 缓冲池中的块 ID。看我的数据库,一个块有 10 页,现在有 1280 页,块ID最大 127。在这里插入图片描述
SPACE: 表示页所属的表空间 ID。0 通常表示系统表空间,就是data目录下的ibdata1文件,ID代表的信息,可以在 INNODB_SYS_TABLESPACES 中查询到,表空间就代表那个文件存储了这个页的信息,一般每张表都会有一个 *.ibd 文件存放该表的数据信息,这个就代表一下两个页的信息是存在test/test7.ibd这个文件里面的。
在这里插入图片描述
在这里插入图片描述

PAGE_NUMBER: 页号,在其所在的表空间中的编号,一般表空间的表空间头信息页、插入缓冲的位图信息页是在前面的,后面是段索引页,再后面就都是数据页,共享表空间没有存储表的数据信息,存储的事其他的信息。
在这里插入图片描述

PAGE_TYPE: 页的类型。可能的类型包括:

  • INDEX: B-tree 索引页也是存放数据的页,innodb 是聚簇索引存储的方式,主键索引和数据都在叶子节点上。
  • FILE_SPACE_HEADER: 表空间头页。
  • IBUF_BITMAP: 插入缓冲位图页。
  • IBUF_FREE_LIST: 插入缓冲空闲列表页。
  • IBUF_INDEX: 插入缓冲池/ insert buffer。
  • INODE: INODE 页。
  • SYSTEM: 系统页,可能包含数据字典、系统元数据…
  • UNKNOWN: 未知页类型,这个一般是未分配的页的类型。

查看当前我们的缓冲池中有哪些页。

SELECT POOL_ID, PAGE_TYPE, COUNT(*) AS PAGES FROM INNODB_BUFFER_PAGE GROUP BY POOL_ID, PAGE_TYPE;

在这里插入图片描述

这里是我执行了一条insert语句之后产生的,这就是是我们的插入操作用上了插入缓冲池;如果我们插入的表没有索引,那么不管怎么尝试都不会有这个类型的页面。所以 change buffer 只对非唯一索引有用,其他的没用
在这里插入图片描述FLUSH_TYPE: 页的刷新类型。缓冲池的刷新行为;代表该页的刷新是怎么产生的,比如,后台线程刷新的,用户查询刷新的FIX_COUNT: 页的固定计数。表示有多少事务当前固定了这个页,防止其从缓冲池中被驱逐,暂时还不知道用途。

IS_HASHED: 表示页是否在缓冲池哈希表中。可能的值有 YESNO,暂时还不知道用途。

NEWEST_MODIFICATION: 页的最新修改 LSN(日志序列号)。修改了数据之后,该值会有改动,数据库重启的时候就是0。

OLDEST_MODIFICATION: 页的最早修改 LSN。一般为0,暂时还不知道用途。

ACCESS_TIME: 页的最后访问时间。在某些配置中,这个值可能总是为 0。

TABLE_NAME: 表的名称。如果页不属于任何表,此值为 NULL,这个页是那张表的页信息。

INDEX_NAME: 索引的名称。如果页不属于任何索引,此值为 NULL 如果是INDEX页会有该信息。

NUMBER_RECORDS: 页中的记录数,这一页存了多少个记录。

DATA_SIZE: 页中的数据大小(字节数),这个页存了多少数据。

COMPRESSED_SIZE: 页的压缩大小(如果页被压缩),暂时还不知道用途。

PAGE_STATE: 页的状态。常见的值有:

  • NOT_USED: 页未使用。
  • FREE: 页空闲。
  • DIRTY: 脏页。
  • CLEAN: 干净页。
  • FILE_PAGE 文件页,这个页面对应的是某个表空间 .ibd 文件里面的页

IO_FIX: 页的 IO 修复状态。常见的值有:

  • IO_NONE: 没有 IO 操作。
  • IO_READ: 读取操作。
  • IO_WRITE: 写入操作。

IS_OLD: 页是否是旧的。可能的值有 YESNO

FREE_PAGE_CLOCK: 页的空闲页面时钟计数,暂时还不知道用途。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三书yjy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值