INNODB_BUFFER_PAGE - xiaoboluo768/mysql-system-schema GitHub Wiki
- 该表提供查询关于buffer pool中的页相关的信息
- 注意:
* 对该表的查询操作可能会导致明显的性能下降(此表主要用于专家级性能监视、或者为MySQL开发性能相关的扩展使用),所以,除非必须,否则不要在生产环境中对该表进行查询,如果确有需要查询该表,可以使用tcpdump生产环境的网络流量到一个测试实例中,并在测试实例中查询该表
* 当删除表、表中的数据行、分区表的某个分区、或表的索引时,相关联的页将仍然保留在缓冲池中,直到其他数据需要更多的缓冲池空间时才会从缓冲池中驱逐这些页,当这些页被驱逐时才会更新INNODB_BUFFER_PAGE表中的记录信息
- 查询该表需要用户具有PROCESS权限,该表为Memory引擎临时表
- 表定义语句
CREATE TEMPORARY TABLE `INNODB_BUFFER_PAGE` (
`POOL_ID` bigint(21) unsigned NOT NULL DEFAULT '0',
`BLOCK_ID` bigint(21) unsigned NOT NULL DEFAULT '0',
`SPACE` bigint(21) unsigned NOT NULL DEFAULT '0',
`PAGE_NUMBER` bigint(21) unsigned NOT NULL DEFAULT '0',
`PAGE_TYPE` varchar(64) DEFAULT NULL,
`FLUSH_TYPE` bigint(21) unsigned NOT NULL DEFAULT '0',
`FIX_COUNT` bigint(21) unsigned NOT NULL DEFAULT '0',
`IS_HASHED` varchar(3) DEFAULT NULL,
`NEWEST_MODIFICATION` bigint(21) unsigned NOT NULL DEFAULT '0',
`OLDEST_MODIFICATION` bigint(21) unsigned NOT NULL DEFAULT '0',
`ACCESS_TIME` bigint(21) unsigned NOT NULL DEFAULT '0',
`TABLE_NAME` varchar(1024) DEFAULT NULL,
`INDEX_NAME` varchar(1024) DEFAULT NULL,
`NUMBER_RECORDS` bigint(21) unsigned NOT NULL DEFAULT '0',
`DATA_SIZE` bigint(21) unsigned NOT NULL DEFAULT '0',
`COMPRESSED_SIZE` bigint(21) unsigned NOT NULL DEFAULT '0',
`PAGE_STATE` varchar(64) DEFAULT NULL,
`IO_FIX` varchar(64) DEFAULT NULL,
`IS_OLD` varchar(3) DEFAULT NULL,
`FREE_PAGE_CLOCK` bigint(21) unsigned NOT NULL DEFAULT '0'
) ENGINE=MEMORY DEFAULT CHARSET=utf8
- 表字段含义
- POOL_ID:buffer pool instance ID。用于区分多个缓冲池实例的标识符ID
- BLOCK_ID:缓冲池块ID
- SPACE:表空间ID。与INNODB_SYS_TABLES表中的SPACE列值相同
- PAGE_NUMBER:页编号
- PAGE_TYPE:页类型。有效值为:ALLOCATED(新分配的页面)、INDEX(BTREE节点页)、UNDO_LOG(undo日志页面)、INODE(索引节点页)、IBUF_FREE_LIST(插入缓冲区空闲列表页)、IBUF_BITMAP(插入缓冲区位图页)、SYSTEM(系统页)、TRX_SYSTEM(事务系统数据页)、FILE_SPACE_HEADER(文件空间头部页)、EXTENT_DESCRIPTOR(区块描述符页)、BLOB(未压缩的BLOB页)、COMPRESSED_BLOB(First 压缩 BLOB 页)、COMPRESSED_BLOB2(Subsequent 压缩 BLOB页)、IBUF_INDEX(插入缓冲索引页)、RTREE_INDEX(RTREE索引页)、UNKNOWN(未知页)
- FLUSH_TYPE:刷新类型
- FIX_COUNT:在缓冲池中使用该块的线程数。当该列值为零时,该区块将被驱逐
- IS_HASHED:在此页上是否构建了hash索引
- NEWEST_MODIFICATION:最新发生修改的LSN号
- OLDEST_MODIFICATION:最早发生修改的LSN号
- ACCESS_TIME:表示页首次被访问时间的抽象数字
- TABLE_NAME:页所属的表名称,该列仅适用于INDEX类型的页
- INDEX_NAME:页所属的索引名称,索引包括聚集索引或二级索引的名称。该列仅适用于INDEX类型的页
- NUMBER_RECORDS:页内包含的记录数
- DATA_SIZE:页内包含的记录的总数据字节大小。该列仅适用于INDEX类型的页
- COMPRESSED_SIZE:压缩页的页大小。对于未压缩的页该列值为空
- PAGE_STATE:页状态。有效值为:NULL(表示该页是干净的压缩页或者是flush列表中的压缩页或者是用作缓冲池watch sentinels的页)、NOT_USED(表示该页在空闲列表中)、READY_FOR_USE(表示该页为未分配的空闲页)、FILE_PAGE(表示该页为缓冲文件页)、MEMORY (表该页包含一个主内存对象)、REMOVE_HASH(表示该页在被放入空闲列表之前需要删除散列索引)
- IO_FIX:表示该页是否有I/O操作被挂起:IO_NONE表示没有的I/O操作被挂起、IO_READ 表示该页有读操作被挂起、IO_WRITE 表示该页有写入操作被挂起
- IS_OLD:表示块是否位于LRU列表中旧块的子列表中
- FREE_PAGE_CLOCK:表示freed_page_clock计数器的值。 freed_page_clock计数器用于跟踪从LRU列表的末尾移除的块的数量
- 表记录内容示例
root@localhost : information_schema 11:50:15> select * from INNODB_BUFFER_PAGE limit 1\G;
*************************** 1. row ***************************
POOL_ID: 0
BLOCK_ID: 0
SPACE: 0
PAGE_NUMBER: 7
PAGE_TYPE: SYSTEM
FLUSH_TYPE: 1
FIX_COUNT: 0
IS_HASHED: NO
NEWEST_MODIFICATION: 25646701632
OLDEST_MODIFICATION: 0
ACCESS_TIME: 1508663684
TABLE_NAME: NULL
INDEX_NAME: NULL
NUMBER_RECORDS: 0
DATA_SIZE: 0
COMPRESSED_SIZE: 0
PAGE_STATE: FILE_PAGE
IO_FIX: IO_NONE
IS_OLD: NO
FREE_PAGE_CLOCK: 0
1 row in set (0.07 sec)
- PS:该表中记录的信息与show engine innodb status语句和show status like '%buffer_pool%';语句的输出信息中一些页的统计信息类似,他们是基于相同数据集输出的,如下
# show engine语句
root@localhost : (none) 11:15:59> show engine innodb status\G;
............
----------------------
BUFFER POOL AND MEMORY
----------------------
Total large memory allocated 1099431936
Dictionary memory allocated 106991
Buffer pool size 65528
Free buffers 65165
Database pages 363
Old database pages 0
Modified db pages 0
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 0, not young 0
0.00 youngs/s, 0.00 non-youngs/s
Pages read 328, created 35, written 39
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 363, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
............
# show status语句
root@localhost : (none) 11:18:06> show status like '%buffer_pool%';
+---------------------------------------+--------------------------------------------------+
| Variable_name | Value |
+---------------------------------------+--------------------------------------------------+
| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started |
| Innodb_buffer_pool_load_status | Buffer pool(s) load completed at 180204 14:41:11 |
| Innodb_buffer_pool_resize_status | |
| Innodb_buffer_pool_pages_data | 363 |
| Innodb_buffer_pool_bytes_data | 5947392 |
| Innodb_buffer_pool_pages_dirty | 0 |
| Innodb_buffer_pool_bytes_dirty | 0 |
| Innodb_buffer_pool_pages_flushed | 39 |
| Innodb_buffer_pool_pages_free | 65165 |
| Innodb_buffer_pool_pages_misc | 0 |
| Innodb_buffer_pool_pages_total | 65528 |
| Innodb_buffer_pool_read_ahead_rnd | 0 |
| Innodb_buffer_pool_read_ahead | 0 |
| Innodb_buffer_pool_read_ahead_evicted | 0 |
| Innodb_buffer_pool_read_requests | 1718 |
| Innodb_buffer_pool_reads | 329 |
| Innodb_buffer_pool_wait_free | 0 |
| Innodb_buffer_pool_write_requests | 515 |
+---------------------------------------+--------------------------------------------------+
18 rows in set (0.01 sec)