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_POSITION
和COMPRESSED
列而不是BLOCK_ID
和PAGE_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 Type | Description |
---|---|
ALLOCATED | 刚分配的页面 |
BLOB | 未压缩的 BLOB 页面 |
COMPRESSED_BLOB2 | 后续 comp BLOB 页面 |
COMPRESSED_BLOB | 第一个压缩的 BLOB 页面 |
EXTENT_DESCRIPTOR | 范围 Descriptors 页面 |
FILE_SPACE_HEADER | 文件空间头 |
IBUF_BITMAP | 插入缓冲区位图 |
IBUF_FREE_LIST | 插入空闲列 table |
IBUF_INDEX | 插入缓冲区索引 |
INDEX | B-tree node |
INODE | Index node |
RTREE_INDEX | R-tree index |
SYSTEM | System page |
TRX_SYSTEM | Transaction 系统数据 |
UNDO_LOG | 撤消日志页面 |
UNKNOWN | Unknown |
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 节“缓冲池”。