该 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 值
Page Type Description ALLOCATED
新分配的页面 BLOB
未压缩的 BLOB 页 COMPRESSED_BLOB2
后续压缩 BLOB 页 COMPRESSED_BLOB
首个压缩 BLOB 页 ENCRYPTED_RTREE
加密的 R 树 EXTENT_DESCRIPTOR
范围描述符页 FILE_SPACE_HEADER
文件空间头 FIL_PAGE_TYPE_UNUSED
未使用 IBUF_BITMAP
插入缓冲位图 IBUF_FREE_LIST
插入缓冲空闲列表 IBUF_INDEX
插入缓冲索引 INDEX
B 树节点 INODE
索引节点 LOB_DATA
未压缩的 LOB 数据 LOB_FIRST
未压缩的 LOB 的第一页 LOB_INDEX
未压缩的 LOB 索引 PAGE_IO_COMPRESSED
压缩的页面 PAGE_IO_COMPRESSED_ENCRYPTED
压缩并加密的页面 PAGE_IO_ENCRYPTED
加密的页面 RSEG_ARRAY
回滚段数组 RTREE_INDEX
R 树索引 SDI_BLOB
未压缩的 SDI BLOB SDI_COMPRESSED_BLOB
压缩的 SDI BLOB SDI_INDEX
SDI 索引 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 的页。该列为空,如果服务器尚未访问该表。
-
INDEX_NAME
该页所属的索引名。该列仅适用于 PAGE_TYPE 值为 INDEX 的页。
-
NUMBER_RECORDS
页中的记录数。
-
DATA_SIZE
记录的总大小。该列仅适用于 PAGE_TYPE 值为 INDEX 的页。
-
COMPRESSED_SIZE
压缩页的大小。对于未压缩的页为空。
-
COMPRESSED
该页是否被压缩。
-
IO_FIX
该页是否有待定的 I/O 操作:
IO_NONE
= 无待定 I/O,IO_READ
= 读取待定,IO_WRITE
= 写入待定。 -
IS_OLD
该块是否在 LRU 列表的旧块子列表中。
-
FREE_PAGE_CLOCK
该块最后被置于 LRU 列表头部时的
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_SCHEMA
COLUMNS
表或SHOW COLUMNS
语句来查看该表的列信息,包括数据类型和默认值。 -
查询该表可能需要 MySQL 分配一个大块连续内存,超过 64 字节乘以活动页数。这可能会导致内存不足错误,特别是在具有多 GB 缓冲池的系统上。
-
查询该表需要 MySQL 锁定缓冲池的数据结构,以便遍历 LRU 列表,这可能会降低并发性,特别是在具有多 GB 缓冲池的系统上。
-
当表、表行、分区或索引被删除时,关联的页将保留在缓冲池中,直到需要空间来存储其他数据。
INNODB_BUFFER_PAGE_LRU
表报告这些页的信息,直到它们被从缓冲池中驱逐。有关 InnoDB 如何管理缓冲池数据的更多信息,请参阅 第 17.5.1 节,“缓冲池”。