# 26.4.3 信息_SCHEMA INNODB_缓冲_页_LRU 表

INNODB_BUFFER_PAGE_LRU表提供了有关页面中的信息InnoDB 缓冲池;特别是它们在决定哪些页面的 LRU 列表中的排序方式驱逐当缓冲池变满时从缓冲池中取出。

INNODB_BUFFER_PAGE_LRU表具有相同的列INNODB_BUFFER_PAGE表有一些例外。它有LRU_POSITION压缩列而不是BLOCK_IDPAGE_STATE列,它不包括和IS_STALE柱子。

有关相关使用信息和示例,请参阅第 15.15.5 节,“InnoDB 信息_SCHEMA 缓冲池表”.

警告

查询INNODB_BUFFER_PAGE_LRU表会影响性能。不要在生产系统上查询此表,除非您知道性能影响并确定它是可以接受的。为避免影响生产系统的性能,请重现您要调查的问题并在测试实例上查询缓冲池统计信息。

INNODB_BUFFER_PAGE_LRU表有这些列:

  • POOL_ID

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

  • LRU_POSITION

    页面在 LRU 列表中的位置。

  • 空间

    表空间 ID;相同的值INNODB_TABLES.SPACE.

  • PAGE_NUMBER

    页码。

  • PAGE_TYPE

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

    表 26.6 INNODB_缓冲_页_LRU.PAGE_类型值

    页面类型 描述
    已分配 新分配的页面
    斑点 未压缩的 BLOB 页面
    COMPRESSED_BLOB2 随后的comp BLOB页面
    COMPRESSED_BLOB 第一个压缩的 BLOB 页面
    ENCRYPTED_RTREE 加密 R 树
    EXTENT_DESCRIPTOR 范围描述符页面
    FILE_SPACE_HEADER 文件空间头
    FIL_PAGE_TYPE_UNUSED 没用过
    IBUF_BITMAP 插入缓冲区位图
    IBUF_FREE_LIST 插入缓冲区空闲列表
    IBUF_INDEX 插入缓冲区索引
    指数 B树节点
    节点 索引节点
    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指数
    系统 系统页面
    TRX_SYSTEM 交易系统数据
    UNDO_LOG 撤消日志页面
    未知 未知
    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_NAME

    页面所属索引的名称。这可以是聚集索引或二级索引的名称。此列仅适用于具有PAGE_TYPE的价值指数.

  • NUMBER_RECORDS

    页内的记录数。

  • 数据大小

    记录大小的总和。此列仅适用于具有PAGE_TYPE的价值指数.

  • COMPRESSED_SIZE

    压缩页面大小。空值对于未压缩的页面。

  • 压缩

    页面是否被压缩。

  • IO_FIX

    此页面是否有任何 I/O 待处理:IO_NONE= 没有挂起的 I/O,IO_READ= 待读,IO_WRITE= 写入挂起。

  • 老了

    该块是否在 LRU 列表中旧块的子列表中。

  • FREE_PAGE_CLOCK

    的价值freed_pa​​ge_clock当块最后被放置在 LRU 列表的头部时计数器。这freed_pa​​ge_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 开发与性能相关的扩展时。

  • 你必须拥有过程查询此表的权限。

  • 使用INFORMATION_SCHEMA 表或显示列语句以查看有关此表列的其他信息,包括数据类型和默认值。

  • 查询此表可能需要 MySQL 分配大块连续内存,超过缓冲池中活动页数的 64 字节乘以。这种分配可能会导致内存不足错误,尤其是对于具有数 GB 缓冲池的系统。

  • 查询这张表需要MySQL在遍历LRU列表的同时锁定代表缓冲池的数据结构,这样会降低并发性,尤其是对于拥有数千兆字节缓冲池的系统。

  • 当表、表行、分区或索引被删除时,关联的页面会保留在缓冲池中,直到其他数据需要空间为止。这INNODB_BUFFER_PAGE_LRUtable 报告有关这些页面的信息,直到它们从缓冲池中逐出。有关如何InnoDB管理缓冲池数据,请参阅第 15.5.1 节,“缓冲池”.