24.32.2 INFORMATION_SCHEMA INNODB_BUFFER_PAGE_LRUtable

INNODB_BUFFER_PAGE_LRUtable 提供有关InnoDB buffer pool中的页面的信息;特别是,它们在 LRU 列 table 中的排序方式决定了当缓冲池已满时要从缓冲池evict缓冲的页面。

INNODB_BUFFER_PAGE_LRUtable 具有与INNODB_BUFFER_PAGEtable 相同的列,除了INNODB_BUFFER_PAGE_LRUtable 具有LRU_POSITIONCOMPRESSED列而不是BLOCK_IDPAGE_STATE列。

有关相关用法信息和示例,请参见第 14.16.5 节“ InnoDB INFORMATION_SCHEMA 缓冲池 table”

Warning

查询INNODB_BUFFER_PAGE_LRUtable 可能会影响性能。除非您了解性能影响并确定可接受,否则不要在生产系统上查询该 table。为避免影响生产系统的性能,请重现要调查的问题并在测试实例上查询缓冲池统计信息。

INNODB_BUFFER_PAGE_LRUtable 具有以下列:

  • POOL_ID

缓冲池 ID。这是区分多个缓冲池实例的标识符。

  • LRU_POSITION

页面在 LRU 列 table 中的位置。

  • SPACE

table 空间 ID;与INNODB_SYS_TABLES.SPACE相同的值。

  • PAGE_NUMBER

页码。

  • PAGE_TYPE

页面类型。下 table 显示了允许的值。

table24.3 INNODB_BUFFER_PAGE_LRU.PAGE_TYPE 值

Page TypeDescription
ALLOCATED刚分配的页面
BLOB未压缩的 BLOB 页面
COMPRESSED_BLOB2后续 comp BLOB 页面
COMPRESSED_BLOB第一个压缩的 BLOB 页面
EXTENT_DESCRIPTOR范围 Descriptors 页面
FILE_SPACE_HEADER文件空间头
IBUF_BITMAP插入缓冲区位图
IBUF_FREE_LIST插入空闲列 table
IBUF_INDEX插入缓冲区索引
INDEXB-tree node
INODEIndex node
RTREE_INDEXR-tree index
SYSTEMSystem page
TRX_SYSTEMTransaction 系统数据
UNDO_LOG撤消日志页面
UNKNOWNUnknown
  • FLUSH_TYPE

冲洗类型。

  • FIX_COUNT

缓冲池中使用此块的线程数。如果为零,则该块有资格被驱逐。

  • IS_HASHED

是否在此页面上构建了哈希索引。

  • NEWEST_MODIFICATION

最年轻的修改的日志序列号。

  • OLDEST_MODIFICATION

最旧的修改的日志序列号。

  • ACCESS_TIME

用于判断页面首次访问时间的抽象数字。

  • TABLE_NAME

页面所属 table 的名称。此列仅适用于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 列 table 中旧块的子列 table 中。

  • FREE_PAGE_CLOCK

当该块位于 LRU 列 table 的最前面时,freed_page_clock计数器的值。 freed_page_clock计数器跟踪从 LRU 列 table 末尾删除的块数。

Example

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

Notes

  • 该 table 主要用于 maven 级的性能监控,或者在为 MySQL 开发与性能相关的扩展时很有用。

  • 您必须具有PROCESS特权才能查询此 table。

  • 使用INFORMATION_SCHEMA COLUMNStable 或SHOW COLUMNS语句查看有关此 table 列的其他信息,包括数据类型和默认值。

  • 查询该 table 可能需要 MySQL 分配较大的连续内存块,该内存块是缓冲池中活动页面数的 64 倍以上。这种分配可能会导致内存不足错误,尤其是对于具有数千兆字节缓冲池的系统。

  • 查询该 table 需要 MySQL 在遍历 LRU 列 table 时锁定 table 示缓冲池的数据结构,这会减少并发性,尤其是对于具有数 GB 缓冲池的系统。

  • 当删除 table,table 行,分区或索引时,关联页面将保留在缓冲池中,直到需要其他数据空间为止。 INNODB_BUFFER_PAGE_LRUtable 报告有关这些页面的信息,直到它们从缓冲池中驱逐出去。有关InnoDB如何 Management 缓冲池数据的更多信息,请参见第 14.5.1 节“缓冲池”