InnoDB INFORMATION_SCHEMA Buffer Pool Tables

InnoDB INFORMATION_SCHEMA缓冲池表提供有关InnoDB缓冲池中页面的缓冲池状态信息和元数据。

InnoDB INFORMATION_SCHEMA缓冲池表包括下面列出的表:

mysql> SHOW TABLES FROM INFORMATION_SCHEMA LIKE 'INNODB_BUFFER%';
+-----------------------------------------------+
| Tables_in_INFORMATION_SCHEMA (INNODB_BUFFER%) |
+-----------------------------------------------+
| INNODB_BUFFER_PAGE_LRU |
| INNODB_BUFFER_PAGE |
| INNODB_BUFFER_POOL_STATS |
+-----------------------------------------------+
  • INNODB_BUFFER_PAGE:保存InnoDB缓冲池中每个页面的信息。

  • INNODB_BUFFER_PAGE_LRU:保存有关InnoDB缓冲池中页面的信息,特别是它们在LRU列表中的排序方式,确定哪些页面在缓冲池变满时从缓冲池中逐出。 INNODB_BUFFER_PAGE_LRU表与INNODB_BUFFER_PAGE表具有相同的列,但INNODB_BUFFER_PAGE_LRU表具有LRU_POSITION列而不是BLOCK_ID列。

  • INNODB_BUFFER_POOL_STATS:提供缓冲池状态信息。 许多相同的信息由SHOW ENGINE INNODB STATUS输出提供,或者可以使用InnoDB缓冲池服务器状态变量获得。

1. INNODB_BUFFER_PAGE

INNODB_BUFFER_PAGE表包含有关InnoDB缓冲池中每个页面的信息。

有关相关用法信息和示例,请参见第14.15.5节“InnoDB INFORMATION_SCHEMA Buffer Pool Tables”。

警告

查询INNODB_BUFFER_PAGE表可能会影响性能。 除非您了解性能影响并确定其可接受,否则请勿在生产系统上查询此表。 为避免影响生产系统的性能,请重现要调查的问题并在测试实例上查询缓冲池统计信息。

INNODB_BUFFER_PAGE表有以下列:

  • POOL_ID :缓冲池ID。这是区分多个缓冲池实例的标识符。
  • BLOCK_ID :缓冲池块ID。
  • SPACE :表空间ID;与INNODB_SYS_TABLES.SPACE相同的值。
  • PAGE_NUMBER :页码
  • PAGE_TYPE :页面类型。下表显示了允许的值:

  • FLUSH_TYPE :flush 类型
  • FIX_COUNT :缓冲池中使用此块的线程数。当为零时,该区块有资格被驱逐。
  • IS_HASHED :是否已在此页面上构建哈希索引。
  • NEWEST_MODIFICATION:最新修改的日志序列号。
  • OLDEST_MODIFICATION:最旧修改的日志序列号。
  • ACCESS_TIME :用于判断页面首次访问时间的抽象数字。
  • TABLE_NAME :页面所属表格的名称。此列仅适用于PAGE_TYPE值为INDEX的页面。
  • INDEX_NAME :页面所属索引的名称。这可以是聚簇索引或辅助索引的名称。此列仅适用于PAGE_TYPE值为INDEX的页面。
  • NUMBER_RECORDS :页面中的记录数。
  • DATA_SIZE :记录大小的总和。此列仅适用于PAGE_TYPE值为INDEX的页面。
  • COMPRESSED_SIZE :压缩页面大小。对于未压缩的页面,为NULL。
  • PAGE_STATE :页面状态。下表显示了允许的值

  • IO_FIX :此页面是否有任何I/O待处理:IIO_NONE = no pending I/O, IO_READ = read pending, IO_WRITE = write pending.
  • IS_OLD :块是否在LRU列表中的旧块的子列表中。
  • FREE_PAGE_CLOCK :当块最后放置在LRU列表的头部时,freed_pa​​ge_clock计数器的值。 freed_pa​​ge_clock计数器跟踪从LRU列表末尾删除的块数。

Notes

  • 此表主要用于专家级性能监视,或者在为MySQL开发与性能相关的扩展时。

  • 您必须具有PROCESS权限才能查询此表。

  • 使用INFORMATION_SCHEMA COLUMNS表或SHOW COLUMNS语句查看有关此表的列的其他信息,包括数据类型和默认值。

  • 删除表,表行,分区或索引时,关联页将保留在缓冲池中,直到其他数据需要空间。 INNODB_BUFFER_PAGE表报告有关这些页面的信息,直到它们从缓冲池中逐出。 有关InnoDB如何管理缓冲池数据的更多信息,请参见第14.6.3.1节“InnoDB缓冲池”。

示例

mysql> 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: 3183743
OLDEST_MODIFICATION: 0
ACCESS_TIME: 1081580410
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 (1.20 sec)

2. INNODB_BUFFER_PAGE_LRU

INNODB_BUFFER_PAGE_LRU表保存有关InnoDB缓冲池中页面的信息; 特别是,如何在LRU列表中对它们进行排序,以确定哪些页面在缓冲池填满时从缓冲池中逐出。

INNODB_BUFFER_PAGE_LRU表与INNODB_BUFFER_PAGE表具有相同的列,但INNODB_BUFFER_PAGE_LRU表具有LRU_POSITION和COMPRESSED列而不是BLOCK_ID和PAGE_STATE列。

有关相关用法信息和示例,请参见“InnoDB INFORMATION_SCHEMA缓冲池表”。

警告

查询INNODB_BUFFER_PAGE_LRU表可能会影响性能。 除非您了解性能影响并确定其可接受,否则请勿在生产系统上查询此表。 为避免影响生产系统的性能,请重现要调查的问题并在测试实例上查询缓冲池统计信息。

INNODB_BUFFER_PAGE_LRU表有以下列:

  • POOL_ID :缓冲池ID。这是区分多个缓冲池实例的标识符。
  • LRU_POSITION :页面在LRU列表中的位置。
  • SPACE :表空间ID;与INNODB_SYS_TABLES.SPACE相同的值。
  • PAGE_NUMBER :页码
  • PAGE_TYPE :页面类型

  • FLUSH_TYPE :flush 类型
  • FIX_COUNT :缓冲池中使用此块的线程数。当为零时,该区块有资格被驱逐。
  • IS_HASHED :是否已在此页面上构建哈希索引。
  • NEWEST_MODIFICATION:最新修改的日志序列号。
  • OLDEST_MODIFICATION:最旧修改的日志序列号。
  • ACCESS_TIME :用于判断页面首次访问时间的抽象数字。
  • TABLE_NAME :页面所属表格的名称。此列仅适用于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 = no pending I/O, IO_READ = read pending, IO_WRITE = write pending.
  • IS_OLD :块是否在LRU列表中的旧块的子列表中。
  • FREE_PAGE_CLOCK :当块最后放置在LRU列表的头部时,freed_pa​​ge_clock计数器的值。 freed_pa​​ge_clock计数器跟踪从LRU列表末尾删除的块数。

Notes

  • 此表主要用于专家级性能监视,或者在为MySQL开发与性能相关的扩展时。

  • 您必须具有PROCESS权限才能查询此表。

  • 使用INFORMATION_SCHEMA COLUMNS表或SHOW COLUMNS语句查看有关此表的列的其他信息,包括数据类型和默认值。

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

  • 查询此表需要MySQL在遍历LRU列表时锁定表示缓冲池的数据结构,这会降低并发性,尤其是对于具有多GB缓冲池的系统。

  • 删除表,表行,分区或索引时,关联页将保留在缓冲池中,直到其他数据需要空间。 INNODB_BUFFER_PAGE_LRU表报告有关这些页面的信息,直到它们从缓冲池中逐出。有关InnoDB如何管理缓冲池数据的更多信息,请参见“InnoDB缓冲池”。

示例

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU LIMIT 1\G
*************************** 1. row ***************************
POOL_ID: 0
LRU_POSITION: 0
SPACE: 0
PAGE_NUMBER: 7
PAGE_TYPE: SYSTEM
FLUSH_TYPE: 1
FIX_COUNT: 0
IS_HASHED: NO
NEWEST_MODIFICATION: 3183743
OLDEST_MODIFICATION: 0
ACCESS_TIME: 1081580410
TABLE_NAME: NULL
INDEX_NAME: NULL
NUMBER_RECORDS: 0
DATA_SIZE: 0
COMPRESSED_SIZE: 0
COMPRESSED: NO
IO_FIX: IO_NONE
IS_OLD: NO
FREE_PAGE_CLOCK: 0
1 row in set (0.01 sec)

3. INNODB_BUFFER_POOL_STATS

INNODB_BUFFER_POOL_STATS表提供了SHOW ENGINE INNODB STATUS输出中提供的大部分相同的缓冲池信息。 使用InnoDB缓冲池服务器状态变量也可以获得大部分相同的信息。

使页面在缓冲池中“年轻”或“不年轻”的想法是指在缓冲池数据结构的头部和尾部的子列表之间传送它们。 “年轻”的页面需要更长的时间才能从缓冲池中老化,而“非年轻”的页面则更接近于驱逐点。

有关相关用法信息和示例,请参见“InnoDB INFORMATION_SCHEMA缓冲池表”。

INNODB_BUFFER_POOL_STATS表有以下列:

  • POOL_ID :缓冲池ID。这是区分多个缓冲池实例的标识符。
  • POOL_SIZE :InnoDB页面中 的缓冲池大小。
  • FREE_BUFFERS :InnoDB 缓冲池中 的空闲页数。
  • DATABASE_PAGES :InnoDB包含数据 的缓冲池中的页数。此数字包括脏页面和干净页面。
  • OLD_DATABASE_PAGES :旧缓冲池子列表中的页数。
  • MODIFIED_DATABASE_PAGES :修改(脏)数据库页面的数量。
  • PENDING_DECOMPRESS :待解压缩的页数。
  • PENDING_READS :待处理读数。
  • PENDING_FLUSH_LRU :LRU中待刷新的页数。
  • PENDING_FLUSH_LIST :刷新列表中待刷新的页数。
  • PAGES_MADE_YOUNG :新的页面数量。
  • PAGES_NOT_MADE_YOUNG :旧的页面数量
  • PAGES_MADE_YOUNG_RATE :每秒生成的页数(自上次打印输出/时间过后生成的新页面)。
  • PAGES_MADE_NOT_YOUNG_RATE :每秒未生成的页数(自上次打印输出/经过时间以来未生成新页面)。
  • NUMBER_PAGES_READ :读取的页数。
  • NUMBER_PAGES_CREATED :创建的页数。
  • NUMBER_PAGES_WRITTEN :写的页数。
  • PAGES_READ_RATE :每秒读取的页数(自上次打印输出/经过时间以来读取的页数)。
  • PAGES_CREATE_RATE :每秒创建的页数(自上次打印输出/时间过后创建的页数)。
  • PAGES_WRITTEN_RATE :每秒写入的页数(自上次打印输出/经过时间以来写入的页数)。
  • NUMBER_PAGES_GET :逻辑读取请求的数量。
  • HIT_RATE :缓冲池命中率。
  • YOUNG_MAKE_PER_THOUSAND_GETS :The number of pages made young per thousand gets.
  • NOT_YOUNG_MAKE_PER_THOUSAND_GETS:The number of pages not made young per thousand gets.
  • NUMBER_PAGES_READ_AHEAD :提前读取的页数。
  • NUMBER_READ_AHEAD_EVICTED :由预读后台线程读入InnoDB缓冲池的页面数,随后在没有被查询访问的情况下被逐出。
  • READ_AHEAD_RATE :每秒预读速率(自上次打印输出/经过时间以来预读的页数)。
  • READ_AHEAD_EVICTED_RATE :每秒无法访问的预读页数(自上次打印输出/时间过后未读取的预读页面)。
  • LRU_IO_TOTAL :Total LRU I/O.
  • LRU_IO_CURRENT :当前间隔的LRU I / O.
  • UNCOMPRESS_TOTAL :解压缩的总页数。
  • UNCOMPRESS_CURRENT :在当前间隔中解压缩的页数。

Notes

此表主要用于专家级性能监视,或者在为MySQL开发与性能相关的扩展时。

您必须具有PROCESS权限才能查询此表。

使用INFORMATION_SCHEMA COLUMNS表或SHOW COLUMNS语句查看有关此表的列的其他信息,包括数据类型和默认值。

示例

mysql> select * from INNODB_BUFFER_POOL_STATS limit 1\G
*************************** 1. row ***************************
POOL_ID: 0
POOL_SIZE: 24573
FREE_BUFFERS: 24262
DATABASE_PAGES: 311
OLD_DATABASE_PAGES: 0
MODIFIED_DATABASE_PAGES: 0
PENDING_DECOMPRESS: 0
PENDING_READS: 0
PENDING_FLUSH_LRU: 0
PENDING_FLUSH_LIST: 0
PAGES_MADE_YOUNG: 0
PAGES_NOT_MADE_YOUNG: 0
PAGES_MADE_YOUNG_RATE: 0
PAGES_MADE_NOT_YOUNG_RATE: 0
NUMBER_PAGES_READ: 55
NUMBER_PAGES_CREATED: 256
NUMBER_PAGES_WRITTEN: 278
PAGES_READ_RATE: 0
PAGES_CREATE_RATE: 0
PAGES_WRITTEN_RATE: 0
NUMBER_PAGES_GET: 1649
HIT_RATE: 0
YOUNG_MAKE_PER_THOUSAND_GETS: 0
NOT_YOUNG_MAKE_PER_THOUSAND_GETS: 0
NUMBER_PAGES_READ_AHEAD: 0
NUMBER_READ_AHEAD_EVICTED: 0
READ_AHEAD_RATE: 0
READ_AHEAD_EVICTED_RATE: 0
LRU_IO_TOTAL: 0
LRU_IO_CURRENT: 0
UNCOMPRESS_TOTAL: 0
UNCOMPRESS_CURRENT: 0
1 row in set (0.00 sec)

InnoDB INFORMATION_SCHEMA Buffer Pool Tables的更多相关文章

  1. InnoDB INFORMATION_SCHEMA FULLTEXT Index Tables

    InnoDB INFORMATION_SCHEMA FULLTEXT Index Tables 下表提供了FULLTEXT索引的元数据: mysql> SHOW TABLES FROM INFO ...

  2. innodb buffer pool小解

    INNODB维护了一个缓存数据和索引信息到内存的存储区叫做buffer pool,他会将最近访问的数据缓存到缓冲区.通过配置各个buffer pool的参数,我们可以显著提高MySQL的性能. INN ...

  3. 14.4.3.1 The InnoDB Buffer Pool

    14.4.3.1 The InnoDB Buffer Pool 14.4.3.2 Configuring Multiple Buffer Pool Instances 14.4.3.3 Making ...

  4. [ERROR] InnoDB: Cannot allocate memory for the buffer pool

    :: mysqld_safe Starting mysqld daemon with databases from /data/mysqldb -- :: [Note] /usr/local/mysq ...

  5. 在线调整InnoDB Buffer Pool Size

    InnoDB Buffer Pool主要是用来缓存数据表和索引数据的内存区域,它的默认值为134217728字节(128MB).最大值取决于CPU架构;32位系统上的最大值为4294967295(23 ...

  6. MySQL · 性能优化· InnoDB buffer pool flush策略漫谈

    MySQL · 性能优化· InnoDB buffer pool flush策略漫谈 背景 我们知道InnoDB使用buffer pool来缓存从磁盘读取到内存的数据页.buffer pool通常由数 ...

  7. 14.6.3.1 The InnoDB Buffer Pool

    14.6.3.1 The InnoDB Buffer Pool InnoDB 保持一个存储区域被称为buffer pool 用于cache数据和索引在内存里, 知道InnoDB buffer pool ...

  8. 14.4.3.5 Configuring InnoDB Buffer Pool Flushing 配置InnoDB Buffer Pool 刷新:

    14.4.3.5 Configuring InnoDB Buffer Pool Flushing 配置InnoDB Buffer Pool 刷新: InnoDB执行某些任务在后台, 包括flush 脏 ...

  9. MySQL · 引擎特性 · InnoDB Buffer Pool

    前言 用户对数据库的最基本要求就是能高效的读取和存储数据,但是读写数据都涉及到与低速的设备交互,为了弥补两者之间的速度差异,所有数据库都有缓存池,用来管理相应的数据页,提高数据库的效率,当然也因为引入 ...

随机推荐

  1. Cg(c for graphic)语言的数据类(转)

    抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人” 本章将着重介绍Cg语言中预定义的内置(bu ...

  2. 51单片机 HC05蓝牙模块

    一.注意事项 1.烧写程序时,要把蓝牙tx,rx信号线拔掉,对烧写程序有影响. 2.执行HC05集命令时,均以\r\n结尾.串口中断若选择“发送新行”时,不用添加\r\n.原理相同. 二.准备软硬件 ...

  3. bzoj 1003: [ZJOI2006]物流运输【spfa+dp】

    预处理出ans[i][j]为i到j时间的最短路,设f[i]为到i时间的最小代价,转移显然就是 f[i]=min(f[j-1]+ans[j][i]*(i-j+1)+k); #include<ios ...

  4. HCNA网工笔记Day2 - IP编址

    IP编址 主机地址子网掩码:区分主机位和网络位网络地址:主机位全部为0,比如 127.0.0.0/8广播地址:主机位全部为1,比如 127.255.255.255/8 一般网络地址和广播地址不能pin ...

  5. jsp 接收汉字参数乱码

    这两天跟汉字问题较上劲了,真是考验基本功 1.  ${param.userName} 乱码 解决方法: <%String name = (String)request.getParameter( ...

  6. scikit-learning教程(二)统计学习科学数据处理的教程二

    模型选择:选择估计量及其参数 得分和交叉验证的分数 如我们所看到的,每个估计者都会公开一种score可以判断新数据的拟合质量(或预测)的方法.越大越好. >>> >>&g ...

  7. [WOJ1138]最大子序和

    题目链接: WOJ1138 题目分析: 是很经典的一道题,乱搞的方法应该有不少,这里介绍O(n)的单调队列做法 首先维护一个前缀和,然后枚举每一个位置,维护一个前缀和单增的单调队列,但队列仅储存下标, ...

  8. HashMap的简单实现

    基本概念 Map 别名映射表,也叫关联数组,基本思想是它维护的键-值(对)关联,因此可以用键查找值,也有放入键值的操作,下面根据定义自己来实现一个Map,首先应该想到的是数组,因为大多数Java集合类 ...

  9. AJPFX简述abstract class和interface的区别

    含有abstract修饰符的class即为抽象类,abstract类不能创建的实例对象.含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是 ...

  10. AJPFX总结java开发常用类(包装,数字处理集合等)(一)

    一:首谈java中的包装类 Java为基本类型提供包装类,这使得任何接受对象的操作也可以用来操作基本类型,直接将简单类型的变量表示为一个类,在执行变量类型的相互转换时,我们会大量使用这些包装类.jav ...