该 INNODB_BUFFER_PAGE_LRU 表提供了关于 InnoDB 缓冲池 中页面的信息;特别是它们在 LRU 列表中的排序方式,该列表决定了当缓冲池已满时要从缓冲池中 逐出 哪个页面。
该 INNODB_BUFFER_PAGE_LRU 表与 INNODB_BUFFER_PAGE 表具有相同的列,但有一些例外。它具有 LRU_POSITION 和 COMPRESSED 列,而不是 BLOCK_ID 和 PAGE_STATE 列,并且它不包含 IS_STALE 列。
有关相关用法信息和示例,请参见 第 17.15.5 节,“InnoDB INFORMATION_SCHEMA 缓冲池表”。
查询 INNODB_BUFFER_PAGE_LRU 表可能会影响性能。除非您了解性能影响并确定它可以接受,否则不要在生产系统上查询此表。为了避免影响生产系统的性能,请在测试实例上复制要调查的问题并查询缓冲池统计信息。
该 INNODB_BUFFER_PAGE_LRU 表具有以下列
POOL_ID缓冲池 ID。这是区分多个缓冲池实例的标识符。
LRU_POSITION页面在 LRU 列表中的位置。
SPACE表空间 ID;与
INNODB_TABLES.SPACE相同的值。PAGE_NUMBER页号。
PAGE_TYPE页面类型。下表显示了允许的值。
表 28.6 INNODB_BUFFER_PAGE_LRU.PAGE_TYPE 值
页面类型 描述 ALLOCATED新分配的页面 BLOB未压缩的 BLOB 页面 COMPRESSED_BLOB2后续压缩 BLOB 页面 COMPRESSED_BLOB第一个压缩的 BLOB 页面 ENCRYPTED_RTREE加密的 R-tree EXTENT_DESCRIPTOR扩展描述符页面 FILE_SPACE_HEADER文件空间头 FIL_PAGE_TYPE_UNUSED未使用 IBUF_BITMAP插入缓冲区位图 IBUF_FREE_LIST插入缓冲区空闲列表 IBUF_INDEX插入缓冲区索引 INDEXB-tree 节点 INODE索引节点 LOB_DATA未压缩的 LOB 数据 LOB_FIRST未压缩 LOB 的第一页 LOB_INDEX未压缩的 LOB 索引 PAGE_IO_COMPRESSED压缩页面 PAGE_IO_COMPRESSED_ENCRYPTED压缩并加密的页面 PAGE_IO_ENCRYPTED加密页面 RSEG_ARRAY回滚段数组 RTREE_INDEXR-tree 索引 SDI_BLOB未压缩的 SDI BLOB SDI_COMPRESSED_BLOB压缩的 SDI BLOB SDI_INDEXSDI 索引 SYSTEM系统页面 TRX_SYSTEM事务系统数据 UNDO_LOG撤消日志页面 UNKNOWN未知 ZLOB_DATA压缩的 LOB 数据 ZLOB_FIRST压缩 LOB 的第一页 ZLOB_FRAG压缩的 LOB 片段 ZLOB_FRAG_ENTRY压缩的 LOB 片段索引 ZLOB_INDEX压缩的 LOB 索引 FLUSH_TYPE刷新类型。
FIX_COUNT使用缓冲池中此块的线程数。当为零时,块可以被逐出。
IS_HASHED是否在此页面上构建了哈希索引。
NEWEST_MODIFICATION最年轻修改的日志序列号。
OLDEST_MODIFICATION最旧修改的日志序列号。
ACCESS_TIME用于判断页面首次访问时间的抽象数字。
TABLE_NAME页面所属表的名称。此列仅适用于
PAGE_TYPE值为INDEX的页面。如果服务器尚未访问该表,则该列为NULL。INDEX_NAME页面所属索引的名称。这可以是聚簇索引或辅助索引的名称。此列仅适用于
PAGE_TYPE值为INDEX的页面。NUMBER_RECORDS页面内的记录数。
DATA_SIZE记录大小的总和。此列仅适用于
PAGE_TYPE值为INDEX的页面。COMPRESSED_SIZE压缩后的页面大小。对于未压缩的页面,值为
NULL。COMPRESSED页面是否被压缩。
IO_FIX是否有任何 I/O 正在等待此页面:
IO_NONE= 无等待 I/O,IO_READ= 读取等待,IO_WRITE= 写入等待。IS_OLD该块是否位于 LRU 列表中旧块子列表中。
FREE_PAGE_CLOCK当该块最后一次被放置到 LRU 列表头部时,
freed_page_clock计数器的值。freed_page_clock计数器跟踪从 LRU 列表末尾移除的块数量。
示例
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU LIMIT 1\G
*************************** 1. row ***************************
POOL_ID: 0
LRU_POSITION: 0
SPACE: 97
PAGE_NUMBER: 1984
PAGE_TYPE: INDEX
FLUSH_TYPE: 1
FIX_COUNT: 0
IS_HASHED: YES
NEWEST_MODIFICATION: 719490396
OLDEST_MODIFICATION: 0
ACCESS_TIME: 3378383796
TABLE_NAME: `employees`.`salaries`
INDEX_NAME: PRIMARY
NUMBER_RECORDS: 468
DATA_SIZE: 14976
COMPRESSED_SIZE: 0
COMPRESSED: NO
IO_FIX: IO_NONE
IS_OLD: YES
FREE_PAGE_CLOCK: 0
备注
此表主要用于专家级别的性能监控,或开发与性能相关的 MySQL 扩展时。
您必须拥有
PROCESS权限才能查询此表。使用
INFORMATION_SCHEMACOLUMNS表或SHOW COLUMNS语句查看有关此表列的更多信息,包括数据类型和默认值。查询此表可能需要 MySQL 为缓冲池中的活动页面数量分配一个大于 64 字节的大块连续内存。 此分配可能导致内存不足错误,尤其是在具有多吉字节缓冲池的系统中。
查询此表需要 MySQL 在遍历 LRU 列表时锁定表示缓冲池的数据结构,这会降低并发性,尤其是在具有多吉字节缓冲池的系统中。
当表、表行、分区或索引被删除时,相关联的页面会保留在缓冲池中,直到需要空间来存储其他数据。
INNODB_BUFFER_PAGE_LRU表报告有关这些页面的信息,直到它们被从缓冲池中驱逐出去。 有关InnoDB如何管理缓冲池数据的更多信息,请参见 第 17.5.1 节,“缓冲池”。