的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列表中是如何排序的,LRU列表决定当缓冲池满时从缓冲池中逐出哪些页。的INNODB_BUFFER_PAGE_LRU
表有与相同的列Innodb_buffer_page.
表,除了那个INNODB_BUFFER_PAGE_LRU
表有一个lru_position.
列,而不是block_id.
柱子。INNODB_BUFFER_POOL_STATS
:提供缓冲池状态信息。大部分相同的信息是由显示引擎的innodb状态
输出,或者可以使用InnoDB
缓冲池服务器状态变量。
查询Innodb_buffer_page.
或者INNODB_BUFFER_PAGE_LRU
表会影响性能。除非您了解性能影响,否则请勿在生产系统上查询这些表格并确定它可以接受。为避免在生产系统上影响性能,重现您想要调查和查询测试实例的缓冲池统计信息的问题。
示例15.6 innodb_buffer_page表中查询系统数据
此查询提供了通过排除页面的近似包含系统数据的页面数TABLE_NAME
价值是零
或包括斜线/
或期间.
在表名中,表示用户定义的表。
mysql> SELECT COUNT(*) FROM INFORMATION_SCHEMA。Innodb_buffer_page.WHERE TABLE_NAME IS NULL OR (INSTR(TABLE_NAME, '/') = 0 AND INSTR(TABLE_NAME, '.') = 0); +----------+ | COUNT(*) | +----------+ | 1516 | +----------+
该查询返回包含系统数据的页面的大致数目、缓冲池页面的总数以及包含系统数据的页面的大致百分比。
mysql> SELECT COUNT(*) FROM INFORMATION_SCHEMA。Innodb_buffer_page.WHERE TABLE_NAME IS NULL OR (INSTR(TABLE_NAME, '/') = 0 AND INSTR(TABLE_NAME, '.') = 0) ) AS system_pages, ( SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE ) AS total_pages, ( SELECT ROUND((system_pages/total_pages) * 100) ) AS system_page_percentage; +--------------+-------------+------------------------+ | system_pages | total_pages | system_page_percentage | +--------------+-------------+------------------------+ | 295 | 8192 | 4 | +--------------+-------------+------------------------+
对象确定缓冲池中系统数据的类型PAGE_TYPE
价值。例如,以下查询返回八个不同PAGE_TYPE
包含系统数据的页面中的值:
mysql>从Information_schema.innodb_buffer_page中选择distinct page_type,其中table_name为null或(ortor(table_name,'/')= 0和ortr(table_name,'。')= 0);+ ------------------ + |page_type |+ ------------------ + |系统||IBUF_BITMAP ||未知|| FILE_SPACE_HEADER | | INODE | | UNDO_LOG | | ALLOCATED | +-------------------+
例15.7查询INNODB_BUFFER_PAGE表的用户数据
该查询通过计算包含用户数据的页面的数量来提供包含用户数据的页面的大致数量TABLE_NAME
价值是非空
和不喜欢'%InnoDB_Tables%'
.
mysql> SELECT COUNT(*) FROM INFORMATION_SCHEMA。Innodb_buffer_page.WHERE TABLE_NAME IS NOT NULL AND TABLE_NAME NOT LIKE '%INNODB_TABLES%'; +----------+ | COUNT(*) | +----------+ | 7897 | +----------+
该查询返回包含用户数据的页面的大致数目、缓冲池页面的总数目以及包含用户数据的页面的大致百分比。
mysql> SELECT COUNT(*) FROM INFORMATION_SCHEMA。Innodb_buffer_page.WHERE TABLE_NAME IS NOT NULL AND (INSTR(TABLE_NAME, '/') > 0 OR INSTR(TABLE_NAME, '.') > 0) ) AS user_pages, ( SELECT COUNT(*) FROM information_schema.INNODB_BUFFER_PAGE ) AS total_pages, ( SELECT ROUND((user_pages/total_pages) * 100) ) AS user_page_percentage; +------------+-------------+----------------------+ | user_pages | total_pages | user_page_percentage | +------------+-------------+----------------------+ | 7897 | 8192 | 96 | +------------+-------------+----------------------+
此查询标识使用缓冲池中的页面中的用户定义表:
MySQL>从Information_schema.innodb_buffer_page中选择distinct table_name,其中table_name不是null,(ortor(table_name,'/')> 0或ortr(table_name,'。')> 0)和table_name不喜欢'`mysql`.`innodb_%'+ ----------------------- + |table_name |+ ----------------------- + |`员工``ssalaries`|`员工`+ ------------------------
示例15.8查询InnoDB_BUFFER_PAGE表中的索引数据
有关索引页的信息,请查询index_name.
列使用索引名称。例如,以下查询返回页面的页数和页面的总数据大小列出
对象上定义的索引员工。萨拉斯
表:
mysql>选择index_name,count(*)作为页面,round(如果(compressing_size = 0,@@ globant_size)/ 1024/1024)为from Information_schema.innodb_buffer_page的'总数据(MB)',其中index_name='emp_no'和table_name ='`员工料号,''ssalaries'';+ ------------ + ------- + ----------------- + |index_name |页面|总数据(MB)|+ ------------ + ------- + ----------------- + |emp_no |1609 |25 |+ ------------ + ------- + ----------------- +
对象上定义的所有索引的页数和页的总数据大小员工。萨拉斯
表:
MySQL>选择index_name,count(*)作为页面,rows(如果(compressing_size = 0,@@ globant_size)/ 1024/1024)为from Information_schema.innodb_buffer_page的'total data(mb)',其中table_name='“员工”:“索引”(SSALARES)(由INDEX_NAME组);+ ------------ + ------- + ----------------- + |index_name |页面|总数据(MB)|+ ------------ + ------- + ----------------- + |emp_no |1608 |25 | | PRIMARY | 6086 | 95 | +------------+-------+-----------------+
示例15.9查询Innodb_buffer_page_lru表中的lru_position数据
的INNODB_BUFFER_PAGE_LRU
表保存有关页面的信息InnoDB
缓冲池,特别是如何订购它们,该池确定在变得满满的情况下确定要从缓冲池驱动的页面。此页面的定义与其相同Innodb_buffer_page.
,除此表外有一个lru_position.
列,而不是block_id.
柱子。
此查询计算由页面占用的LRU列表中特定位置的位置数劳工
表格
mysql>从Information_schema.innodb_buffer_page_lru中选择count(lru_position),其中table_name ='`employees`.employees`''和lru_position <3072;+ -------------------- + |计数(lru_position)|+ -------------------- + |548 |+ --------------------
示例15.10查询InnodB_Buffer_Pool_Stats表
的INNODB_BUFFER_POOL_STATS
表提供了类似的信息显示引擎的innodb状态
和InnoDB
缓冲池状态变量。
mysql> SELECT * FROM information_schema。INNODB_BUFFER_POOL_STATS\G *************************** 1. row *************************** POOL_ID: 0 POOL_SIZE: 8192 FREE_BUFFERS: 1 DATABASE_PAGES: 8173 OLD_DATABASE_PAGES: 3014 MODIFIED_DATABASE_PAGES: 0 PENDING_DECOMPRESS: 0 PENDING_READS: 0 PENDING_FLUSH_LRU: 0 PENDING_FLUSH_LIST: 0 PAGES_MADE_YOUNG: 15907 PAGES_NOT_MADE_YOUNG: 3803101 PAGES_MADE_YOUNG_RATE: 0 PAGES_MADE_NOT_YOUNG_RATE: 0 NUMBER_PAGES_READ: 3270 NUMBER_PAGES_CREATED: 13176 NUMBER_PAGES_WRITTEN: 15109 PAGES_READ_RATE: 0 PAGES_CREATE_RATE: 0 PAGES_WRITTEN_RATE: 0 NUMBER_PAGES_GET: 33069332 HIT_RATE: 0 YOUNG_MAKE_PER_THOUSAND_GETS: 0 NOT_YOUNG_MAKE_PER_THOUSAND_GETS: 0 NUMBER_PAGES_READ_AHEAD: 2713 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
相比之下,显示引擎的innodb状态
产出和InnoDB
缓冲池状态变量输出如下所示,基于相同的数据集。
有关显示引擎的innodb状态
输出,看到第15.17.3节,“InnoDB标准监视器和锁监视器输出”.
MySQL> Show Engine InnoDB状态\ G ... ---------------------------------------------总大内存分配137428992字典内存分配579084缓冲池大小8192自由缓冲区1数据库页面8173旧数据库页面3014修改db页面0待读取0待读写:lru 0,刷新列表0,单Page 0页面15907,而不是Young 3803101 0.00幼年/ S,0.00非年轻人/读3270,创建的13176,写入15109 0.00 READS / S,0.00创建/ s,0.00写入/ s没有缓冲池页面上次打印页面上方读取0.00 / s,无需访问0.00 / s,随机读取,0.00 / s Lru Len:8173,Unzip_lru Len:0 I / O Sum [0]:Cur [0],解压缩和[0]:cur [0] ...
状态变量说明请参见第5.1.10节,“服务器状态变量”.
mysql> SHOW STATUS LIKE 'Innodb_buffer%';+---------------------------------------+-------------+ | Variable_name |值 | +---------------------------------------+-------------+ | Innodb_buffer_pool_dump_status |没有开始| | Innodb_buffer_pool_load_status |没有开始| | Innodb_buffer_pool_resize_status |没有开始| | Innodb_buffer_pool_pages_data | 8173 | |Innodb_buffer_pool_bytes_data | 133906432 | | Innodb_buffer_pool_pages_dirty | 0 | | Innodb_buffer_pool_bytes_dirty | 0 | | Innodb_buffer_pool_pages_flushed | 15109 | | Innodb_buffer_pool_pages_free | 1 | | Innodb_buffer_pool_pages_misc 18 | | | Innodb_buffer_pool_pages_total | 8192 | | Innodb_buffer_pool_read_ahead_rnd | 0 | |Innodb_buffer_pool_read_ahead | 2713 | | Innodb_buffer_pool_read_ahead_evicted | 0 | | Innodb_buffer_pool_read_requests | 33069332 | | Innodb_buffer_pool_reads | 558 | | Innodb_buffer_pool_wait_free | 0 | | Innodb_buffer_pool_write_requests | 11985961 | +---------------------------------------+-------------+