The INNODB_BUFFER_PAGE_LRU table holds
information about the pages in the InnoDB
buffer pool, in particular
how they are ordered that determines which pages to
evict from the buffer pool
when it becomes full.
The INNODB_BUFFER_PAGE_LRU table has
the same columns as the
INNODB_BUFFER_PAGE table, except that
the INNODB_BUFFER_PAGE_LRU table has
an LRU_POSITION column instead of a
BLOCK_ID column.
For related usage information and examples, see Section 14.18.3, “InnoDB INFORMATION_SCHEMA Buffer Pool Tables”.
Querying the INNODB_BUFFER_PAGE_LRU table can
introduce significant performance overhead. Do not query this
table on a production system unless you are aware of the
performance impact that your query may have, and have determined
it to be acceptable. To avoid impacting performance, reproduce
the issue you want to investigate on a test instance and query
the INNODB_BUFFER_PAGE_LRU table on the test
instance.
Table 21.2 INNODB_BUFFER_PAGE_LRU Columns
| Column name | Description |
|---|---|
POOL_ID | Buffer Pool ID. An identifier to distinguish between multiple buffer pool instances. |
LRU_POSITION | The position of the page in the LRU list. |
SPACE | Tablespace ID. Uses the same value as in
INNODB_SYS_TABLES.SPACE. |
PAGE_NUMBER | Page number. |
PAGE_TYPE | Page type. Permitted values are ALLOCATED (Freshly
allocated page), INDEX (B-tree node),
UNDO_LOG (Undo log page),
INODE (Index node),
IBUF_FREE_LIST (Insert buffer free
list), IBUF_BITMAP (Insert buffer
bitmap), SYSTEM (System page),
TRX_SYSTEM (Transaction system data),
FILE_SPACE_HEADER (File space header),
EXTENT_DESCRIPTOR (Extent descriptor
page), BLOB (Uncompressed BLOB page),
COMPRESSED_BLOB (First compressed BLOB
page), COMPRESSED_BLOB2 (Subsequent
comp BLOB page), IBUF_INDEX (Insert
buffer index), UNKNOWN (unknown). |
FLUSH_TYPE | Flush type. |
FIX_COUNT | Number of threads using this block within the buffer pool. When zero, the block is eligible to be evicted. |
IS_HASHED | Whether hash index has been built on this page. |
NEWEST_MODIFICATION | Log Sequence Number of the youngest modification. |
OLDEST_MODIFICATION | Log Sequence Number of the oldest modification. |
ACCESS_TIME | An abstract number used to judge the first access time of the page. |
TABLE_NAME | Name of the table the page belongs to. This column is only applicable to
pages of type INDEX. |
INDEX_NAME | Name of the index the page belongs to. It can be the name of a clustered
index or a secondary index. This column is only applicable
to pages of type INDEX. |
NUMBER_RECORDS | Number of records within the page. |
DATA_SIZE | Sum of the sizes of the records. This column is only applicable to pages
of type INDEX. |
COMPRESSED_SIZE | Compressed page size. Null for pages that are not compressed. |
PAGE_STATE | Page state. A page with valid data has one of the following states:
FILE_PAGE (buffers a page of data from
a file), MEMORY (buffers a page from an
in-memory object), COMPRESSED. Other
possible states (managed by InnoDB)
are: NULL,
READY_FOR_USE,
NOT_USED,
REMOVE_HASH. |
IO_FIX | Specifies whether any I/O is pending for this page:
IO_NONE = no pending I/O,
IO_READ = read pending,
IO_WRITE = write pending. |
IS_OLD | Specifies whether or not the block is in the sublist of old blocks in the LRU list. |
FREE_PAGE_CLOCK | The value of the freed_page_clock counter when the
block was the last placed at the head of the LRU list. The
freed_page_clock counter tracks the
number of blocks removed from the end of the LRU list. |
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU LIMIT 1\G
*************************** 1. row ***************************
POOL_ID: 0
LRU_POSITION: 0
SPACE: 0
PAGE_NUMBER: 7485
PAGE_TYPE: INDEX
FLUSH_TYPE: 2
FIX_COUNT: 0
IS_HASHED: YES
NEWEST_MODIFICATION: 216319316
OLDEST_MODIFICATION: 0
ACCESS_TIME: 3376846384
TABLE_NAME: employees/salaries
INDEX_NAME: emp_no
NUMBER_RECORDS: 1300
DATA_SIZE: 15600
COMPRESSED_SIZE: 0
COMPRESSED: NO
IO_FIX: IO_NONE
IS_OLD: YES
FREE_PAGE_CLOCK: 0
This table is primarily useful for expert-level performance monitoring, or when developing performance-related extensions for MySQL.
You must have the PROCESS
privilege to query this table.
Use DESCRIBE or
SHOW COLUMNS to view additional
information about the columns of this table including data
types and default values.
Querying this table can require MySQL to allocate a large block of contiguous memory, more than 64 bytes time the number of active pages in the buffer pool. This allocation could potentially cause an out-of-memory error, especially for systems with multi-gigabyte buffer pools.
Querying this table requires MySQL to lock the data structure representing the buffer pool while traversing the LRU list, which can reduce concurrency, especially for systems with multi-gigabyte buffer pools.
When tables, table rows, partitions, or indexes are deleted,
associated pages remain in the buffer pool until space is
required for other data. The
INNODB_BUFFER_PAGE_LRU table reports
information about these pages until they are evicted from the
buffer pool. For more information about how the
InnoDB manages buffer pool data, see
Section 14.9.2.1, “The InnoDB Buffer Pool”.