### 26.4.3 信息\_SCHEMA INNODB\_缓冲\_页\_LRU 表

[](<>)

这[`INNODB_BUFFER_PAGE_LRU`](information-schema-innodb-buffer-page-lru-table.html)表提供了有关页面中的信息`InnoDB` [缓冲池](glossary.html#glos_buffer_pool);特别是它们在决定哪些页面的 LRU 列表中的排序方式[驱逐](glossary.html#glos_eviction)当缓冲池变满时从缓冲池中取出。

这[`INNODB_BUFFER_PAGE_LRU`](information-schema-innodb-buffer-page-lru-table.html)表具有相同的列[`INNODB_BUFFER_PAGE`](information-schema-innodb-buffer-page-table.html)表有一些例外。它有`LRU_POSITION`和`压缩`列而不是`BLOCK_ID`和`PAGE_STATE`列，它不包括和`IS_STALE`柱子。

有关相关使用信息和示例，请参阅[第 15.15.5 节，“InnoDB 信息\_SCHEMA 缓冲池表”](innodb-information-schema-buffer-pool-tables.html).

警告

查询[`INNODB_BUFFER_PAGE_LRU`](information-schema-innodb-buffer-page-lru-table.html)表会影响性能。不要在生产系统上查询此表，除非您知道性能影响并确定它是可以接受的。为避免影响生产系统的性能，请重现您要调查的问题并在测试实例上查询缓冲池统计信息。

这[`INNODB_BUFFER_PAGE_LRU`](information-schema-innodb-buffer-page-lru-table.html)表有这些列：

-   `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 开发与性能相关的扩展时。

-   你必须拥有[`过程`](privileges-provided.html#priv_process)查询此表的权限。

-   使用`INFORMATION_SCHEMA` [`列`](information-schema-columns-table.html)表或[`显示列`](show-columns.html)语句以查看有关此表列的其他信息，包括数据类型和默认值。

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

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

-   当表、表行、分区或索引被删除时，关联的页面会保留在缓冲池中，直到其他数据需要空间为止。这[`INNODB_BUFFER_PAGE_LRU`](information-schema-innodb-buffer-page-lru-table.html)table 报告有关这些页面的信息，直到它们从缓冲池中逐出。有关如何`InnoDB`管理缓冲池数据，请参阅[第 15.5.1 节，“缓冲池”](innodb-buffer-pool.html).
