的InnoDB
INFORMATION_SCHEMA
缓冲池表提供缓冲池状态信息和元数据的页面中InnoDB
缓冲池。
的InnoDB
INFORMATION_SCHEMA
缓冲池表包括下面列出:
mysql >显示表等INFORMATION_SCHEMA 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
:提供缓冲池状态信息。提供了同样的信息显示引擎INNODB状态
输出,或可以获得使用InnoDB
缓冲池服务器状态变量。
查询INNODB_BUFFER_PAGE
或INNODB_BUFFER_PAGE_LRU
表可以影响性能。不要在生产系统查询这些表,除非你知道对性能的影响,确定它是可以接受的。为了避免影响性能在生产系统上,复制你想要调查的问题和查询缓冲池统计测试实例。
示例15.6 INNODB_BUFFER_PAGE表中查询系统数据
这个查询的页面提供了一个近似计算包含系统数据不包括页TABLE_NAME
价值是零
或包括一个斜杠/
或时期。
表名,这表明一个用户定义的表。
从INFORMATION_SCHEMA mysql > SELECT COUNT (*)。INNODB_BUFFER_PAGEWHERE TABLE_NAME IS NULL OR (INSTR(TABLE_NAME, '/') = 0 AND INSTR(TABLE_NAME, '.') = 0); +----------+ | COUNT(*) | +----------+ | 1516 | +----------+
这个查询返回包含系统数据的近似的页面数量,缓冲池页面的总数,以及一个近似百分比的页面包含系统数据。
mysql >从INFORMATION_SCHEMA选择(SELECT COUNT (*)。INNODB_BUFFER_PAGEWHERE 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选择PAGE_TYPE截然不同。INNODB_BUFFER_PAGEWHERE TABLE_NAME IS NULL OR (INSTR(TABLE_NAME, '/') = 0 AND INSTR(TABLE_NAME, '.') = 0); +-------------------+ | PAGE_TYPE | +-------------------+ | SYSTEM | | IBUF_BITMAP | | UNKNOWN | | FILE_SPACE_HEADER | | INODE | | UNDO_LOG | | ALLOCATED | +-------------------+
示例15.7 INNODB_BUFFER_PAGE表中查询用户数据
这个查询的页面提供了一个近似计算包含用户数据,通过计算页面TABLE_NAME
值是非空
和不喜欢' % INNODB_TABLES % '
。
从INFORMATION_SCHEMA mysql > SELECT COUNT (*)。INNODB_BUFFER_PAGEWHERE TABLE_NAME IS NOT NULL AND TABLE_NAME NOT LIKE '%INNODB_TABLES%'; +----------+ | COUNT(*) | +----------+ | 7897 | +----------+
这个查询返回包含用户数据的近似的页面数量,缓冲池页面的总数,以及一个近似百分比的页面包含用户数据。
mysql >从INFORMATION_SCHEMA选择(SELECT COUNT (*)。INNODB_BUFFER_PAGEWHERE 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选择TABLE_NAME截然不同。INNODB_BUFFER_PAGEWHERE TABLE_NAME IS NOT NULL AND (INSTR(TABLE_NAME, '/') > 0 OR INSTR(TABLE_NAME, '.') > 0) AND TABLE_NAME NOT LIKE '`mysql`.`innodb_%'; +-------------------------+ | TABLE_NAME | +-------------------------+ | `employees`.`salaries` | | `employees`.`employees` | +-------------------------+
示例15.8 INNODB_BUFFER_PAGE表中查询索引数据
索引页信息,查询INDEX_NAME
使用的名称索引列。例如,下面的查询返回的页面数量和总页面的数据大小列出
指数的定义employees.salaries
表:
mysql >选择INDEX_NAME, COUNT(*)页面,圆(金额(如果(@@GLOBAL COMPRESSED_SIZE = 0。innodb_page_size COMPRESSED_SIZE)) / 1024/1024)从INFORMATION_SCHEMA“全部数据(MB)”。INNODB_BUFFER_PAGE INDEX_NAME =列出和TABLE_NAME =“雇员“。”薪资”;+ - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + | INDEX_NAME总数据(MB) | + | |页- - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + |列出| 1609 | | + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - +
这个查询返回的页面数量和总数据大小的页面上定义索引employees.salaries
表:
mysql >选择INDEX_NAME, COUNT(*)页面,圆(金额(如果(@@GLOBAL COMPRESSED_SIZE = 0。innodb_page_size COMPRESSED_SIZE)) / 1024/1024)从INFORMATION_SCHEMA“全部数据(MB)”。INNODB_BUFFER_PAGE TABLE_NAME =“员工”。“工资”GROUP BY INDEX_NAME;+ - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + | INDEX_NAME总数据(MB) | + | |页- - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + |列出25 | | 1608 | |主| 6086 | 95 | + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - +
15.9示例查询LRU_POSITION INNODB_BUFFER_PAGE_LRU表中的数据
的INNODB_BUFFER_PAGE_LRU
表保存的页面信息InnoDB
缓冲池,特别是他们如何命令决定哪个页面驱逐从缓冲池当它被填满。这个页面的定义是一样的INNODB_BUFFER_PAGE
,除了这个表有一个LRU_POSITION
列,而不是BLOCK_ID
列。
这个查询项的数量在一个特定的位置在LRU列表的页面劳工
表。
从INFORMATION_SCHEMA mysql > SELECT COUNT (LRU_POSITION)。INNODB_BUFFER_PAGE_LRU TABLE_NAME =“员工”。“员工”和LRU_POSITION < 3072;+ - - - - - - - - - - - - - - - - - - - - - - - - + (LRU_POSITION) | |计数+ - - - - - - - - - - - - - - - - - - - - - - - - + | 548 | + - - - - - - - - - - - - - - - - - - - - - - - - +
15.10示例查询INNODB_BUFFER_POOL_STATS表
的INNODB_BUFFER_POOL_STATS
表提供类似的信息显示引擎INNODB状态
和InnoDB
缓冲池状态变量。
从information_schema mysql > SELECT *。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 >显示引擎INNODB状态\ G……- - - - - - - - - - - - - - - - - - - - - - -缓冲池和内存- - - - - - - - - - - - - - - - - - - - - - -总大内存分配579084字典分配的内存137428992数据库缓冲池大小8192免费缓冲区1 8173旧数据库页3014页修改数据库页面等待读取0等待写道:LRU 0,刷新列表0,单页0让年轻的15907页,不年轻扬斯/ s 3803101 0.00, 0.00 non-youngs / s阅读3270页,13176年创建,15109年0.00编写读取/秒,0.00创建/秒,0.00 / s写道没有缓冲池页面得到自上次打印页面读前0.00 / s,驱逐没有0.00 / s,随机读取之前0.00 / s LRU len: 8173年,unzip_LRU len: 0 I / O和[0]:坏蛋[0],[0]:解压缩和坏蛋[0]…
状态变量的描述,请参阅部分5.1.10,“服务器状态变量”。
mysql >显示状态像“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 | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +