28.4.3 INFORMATION_SCHEMA INNODB_BUFFER_PAGE_LRU 表
表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 Buffer Pool Tables”。
查询INNODB_BUFFER_PAGE_LRU
表可能会影响性能。除非您了解性能影响并确定其可接受,否则不要在生产系统上查询该表。在生产系统上避免影响性能,可以在测试实例中复制问题和查询缓冲池统计信息。
INNODB_BUFFER_PAGE_LRU
表具有以下列:
-
POOL_ID
缓冲池ID。这是一个标识符,用于区分多个缓冲池实例。
-
LRU_POSITION
LRU列表中的页面位置。
-
SPACE
表空间ID;与
INNODB_TABLES.SPACE
相同的值。 -
PAGE_NUMBER
页面号码。
-
PAGE_TYPE
页面类型。以下表格显示了允许的值。
INNODB_BUFFER_PAGE_LRU.PAGE_TYPE 值
Page Type Description ALLOCATED
新分配的页面 BLOB
未压缩的 BLOB 页面 COMPRESSED_BLOB2
后续压缩 BLOB 页面 COMPRESSED_BLOB
首次压缩的 BLOB 页面 ENCRYPTED_RTREE
加密R树 EXTENT_DESCRIPTOR
extent描述符页 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_系统
事务系统数据 UNDO_LOG
Undo日志页面 未知
未知 ZLOB_数据
压缩LOB数据 ZLOB_FIRST
压缩LOB的第一页 ZLOB_FRAG
压缩LOB片段 ZLOB_FRAG_ENTRY
压缩LOB片段索引 ZLOB_INDEX
压缩LOB索引 -
FLUSH_类型
刷新类型。
-
FIX_数量
缓冲池中使用该块的线程数。当为零时,该块可被驱逐。
-
是否哈希
是否在该页面上建立了哈希索引。
-
最新修改
最年轻的修改日志序列号。
-
最古老修改
最古老的修改日志序列号。
-
访问时间
一个抽象数字,用于判断页面的首次访问时间。
-
表名
该页面所属表的名称。只有在
PAGE_类型
值为INDEX
时,该列才适用。如果服务器尚未访问该表,则该列为NULL
。 -
索引名
该页所属索引的名称。这可以是聚集索引或次要索引的名称。该列仅适用于具有
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_SCHEMA
表COLUMNS
或语句SHOW COLUMNS
查看该表的列信息,包括数据类型和默认值。 -
查询该表可能需要 MySQL 分配一个大块连续内存,超过 64 字节乘以缓冲池中活动页面的数量。这可能会导致内存溢出错误,特别是对于具有多 GB 缓冲池的系统。
-
查询该表需要 MySQL 锁定缓冲池数据结构,同时遍历 LRU 列表,这可以减少并发性,特别是对于具有多 GB 缓冲池的系统。
-
当表、行、分区或索引被删除时,关联页面将在缓冲池中保持直到空间被其他数据所需为止。
INNODB_BUFFER_PAGE_LRU
表报告这些页面的信息,直到它们从缓冲池中被驱逐。关于InnoDB
管理缓冲池数据的更多信息,请见第 17.5.1 节,“缓冲池”。