该INNODB_BUFFER_PAGE_LRU表提供有关
InnoDB 缓冲池中页面的信息;特别是,它们在 LRU 列表中的排序方式决定
了当缓冲池变满时要从缓冲池中
逐出哪些页面。
该INNODB_BUFFER_PAGE_LRU表具有与表相同的列
INNODB_BUFFER_PAGE,只是INNODB_BUFFER_PAGE_LRU表具有
LRU_POSITION和COMPRESSED
列而不是BLOCK_ID和
PAGE_STATE列。
有关相关的使用信息和示例,请参阅 第 14.16.5 节,“InnoDB INFORMATION_SCHEMA 缓冲池表”。
查询INNODB_BUFFER_PAGE_LRU
表会影响性能。不要在生产系统上查询此表,除非您了解性能影响并确定它是可以接受的。为避免影响生产系统的性能,请重现您要调查的问题并在测试实例上查询缓冲池统计信息。
该INNODB_BUFFER_PAGE_LRU表有以下列:
POOL_ID缓冲池 ID。这是区分多个缓冲池实例的标识符。
LRU_POSITION页在 LRU 列表中的位置。
SPACE表空间ID;与 相同的值
INNODB_SYS_TABLES.SPACE。PAGE_NUMBER页码。
PAGE_TYPE页面类型。下表显示了允许的值。
表 24.6 INNODB_BUFFER_PAGE_LRU.PAGE_TYPE 值
页面类型 描述 ALLOCATED新分配的页面 BLOB未压缩的 BLOB 页面 COMPRESSED_BLOB2随后的 comp BLOB 页面 COMPRESSED_BLOB第一个压缩的 BLOB 页 EXTENT_DESCRIPTOR范围描述符页面 FILE_SPACE_HEADER文件空间头 IBUF_BITMAP插入缓冲区位图 IBUF_FREE_LIST插入缓冲区空闲列表 IBUF_INDEX插入缓冲区索引 INDEXB树节点 INODE索引节点 RTREE_INDEXR树索引 SYSTEM系统页面 TRX_SYSTEM交易系统数据 UNDO_LOG撤消日志页面 UNKNOWN未知 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压缩页面大小。
NULL对于未压缩的页面。COMPRESSED页面是否被压缩。
IO_FIX此页面是否有任何 I/O 挂起:
IO_NONE= 没有挂起的 I/O,IO_READ= 读挂起,IO_WRITE= 写挂起。IS_OLD该块是否在 LRU 列表中旧块的子列表中。
FREE_PAGE_CLOCKfreed_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_SCHEMACOLUMNS表或SHOW COLUMNS语句查看有关此表的列的其他信息,包括数据类型和默认值。查询此表可能需要 MySQL 分配一大块连续内存,超过缓冲池中活动页数的 64 字节倍。此分配可能会导致内存不足错误,尤其是对于具有数 GB 缓冲池的系统。
查询这张表需要MySQL在遍历LRU链表时锁定代表buffer pool的数据结构,这样可以降低并发度,尤其是对于buffer pool上千兆的系统。
当表、表行、分区或索引被删除时,关联的页面将保留在缓冲池中,直到其他数据需要空间为止。该
INNODB_BUFFER_PAGE_LRU表报告有关这些页面的信息,直到它们被从缓冲池中逐出。有关如何InnoDB管理缓冲池数据的更多信息,请参阅 第 14.5.1 节,“缓冲池”。