### 26.4.2 信息\_SCHEMA INNODB\_缓冲\_页表 [](<>) 这[`INNODB_BUFFER_PAGE`](information-schema-innodb-buffer-page-table.html)表提供有关每个[页](glossary.html#glos_page)在里面`InnoDB` [缓冲池](glossary.html#glos_buffer_pool). 有关相关使用信息和示例,请参阅[第 15.15.5 节,“InnoDB 信息\_SCHEMA 缓冲池表”](innodb-information-schema-buffer-pool-tables.html). 警告 查询[`INNODB_BUFFER_PAGE`](information-schema-innodb-buffer-page-table.html)表会影响性能。不要在生产系统上查询此表,除非您知道性能影响并确定它是可以接受的。为避免影响生产系统的性能,请重现您要调查的问题并在测试实例上查询缓冲池统计信息。 这[`INNODB_BUFFER_PAGE`](information-schema-innodb-buffer-page-table.html)表有这些列: - `POOL_ID` 缓冲池 ID。这是区分多个缓冲池实例的标识符。 - `BLOCK_ID` 缓冲池块 ID。 - `空间` 表空间 ID;相同的值`INNODB_TABLES.SPACE`. - `PAGE_NUMBER` 页码。 - `PAGE_TYPE` 页面类型。下表显示了允许的值。 [](<>) **表 26.4 INNODB\_缓冲\_PAGE.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` 压缩页面大小。`空值`对于未压缩的页面。 - `PAGE_STATE` 页面状态。下表显示了允许的值。 [](<>) **表 26.5 INNODB\_缓冲\_PAGE.PAGE\_状态值** | 页面状态 | 描述 | | ---- | --- | | `FILE_PAGE` | 缓冲文件页面 | | `记忆` | 包含一个主内存对象 | | `未使用` | 在免费列表中 | | `空值` | 清理压缩页面,刷新列表中的压缩页面,用作缓冲池监视哨兵的页面 | | `准备启用` | 免费页面 | | `REMOVE_HASH` | 在放入空闲列表之前应删除哈希索引 | - `IO_FIX` 此页面是否有任何 I/O 待处理:`IO_NONE`= 没有挂起的 I/O,`IO_READ`= 待读,`IO_WRITE`= 写挂起,`IO_PIN`= 不允许搬迁和从冲洗中移除。 - `老了` 该块是否在 LRU 列表中旧块的子列表中。 - `FREE_PAGE_CLOCK` 的价值`freed_pa​​ge_clock`当块最后被放置在 LRU 列表的头部时计数器。这`freed_pa​​ge_clock`计数器跟踪从 LRU 列表末尾删除的块数。 - `IS_STALE` 页面是否过时。在 MySQL 8.0.24 中添加。 #### 例子 ``` mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE LIMIT 1\G *************************** 1. row *************************** POOL_ID: 0 BLOCK_ID: 0 SPACE: 97 PAGE_NUMBER: 2473 PAGE_TYPE: INDEX FLUSH_TYPE: 1 FIX_COUNT: 0 IS_HASHED: YES NEWEST_MODIFICATION: 733855581 OLDEST_MODIFICATION: 0 ACCESS_TIME: 3378385672 TABLE_NAME: `employees`.`salaries` INDEX_NAME: PRIMARY NUMBER_RECORDS: 468 DATA_SIZE: 14976 COMPRESSED_SIZE: 0 PAGE_STATE: FILE_PAGE IO_FIX: IO_NONE IS_OLD: YES FREE_PAGE_CLOCK: 66 IS_STALE: NO ``` #### 笔记 - 此表主要用于专家级性能监控,或在为 MySQL 开发与性能相关的扩展时。 - 你必须拥有[`过程`](privileges-provided.html#priv_process)查询此表的权限。 - 使用`INFORMATION_SCHEMA` [`列`](information-schema-columns-table.html)表或[`显示列`](show-columns.html)语句以查看有关此表列的其他信息,包括数据类型和默认值。 - 当表、表行、分区或索引被删除时,关联的页面会保留在缓冲池中,直到其他数据需要空间为止。这[`INNODB_BUFFER_PAGE`](information-schema-innodb-buffer-page-table.html)table 报告有关这些页面的信息,直到它们从缓冲池中逐出。有关如何`InnoDB`管理缓冲池数据,请参阅[第 15.5.1 节,“缓冲池”](innodb-buffer-pool.html).