本节简要介绍
InnoDB
与 Performance Schema 的集成。有关全面的性能模式文档,请参阅
第 25 章,MySQL 性能模式。
InnoDB
您可以使用 MySQL
Performance Schema 功能
分析某些内部操作。这种类型的调优主要面向评估优化策略以克服性能瓶颈的专家用户。DBA 还可以使用此功能进行容量规划,以查看他们的典型工作负载是否遇到特定 CPU、RAM 和磁盘存储组合的性能瓶颈;如果是,判断是否可以通过增加系统某部分的容量来提高性能。
要使用此功能检查InnoDB
性能:
您必须大致熟悉如何使用 性能模式功能。例如,您应该知道如何启用工具和消费者,以及如何查询
performance_schema
表以检索数据。有关介绍性概述,请参阅 第 25.1 节,“性能模式快速入门”。您应该熟悉可用于
InnoDB
. 要查看InnoDB
- 相关的工具,您可以在setup_instruments
表中查询包含“innodb
”的工具名称。mysql> SELECT * FROM performance_schema.setup_instruments WHERE NAME LIKE '%innodb%'; +-------------------------------------------------------+---------+-------+ | NAME | ENABLED | TIMED | +-------------------------------------------------------+---------+-------+ | wait/synch/mutex/innodb/commit_cond_mutex | NO | NO | | wait/synch/mutex/innodb/innobase_share_mutex | NO | NO | | wait/synch/mutex/innodb/autoinc_mutex | NO | NO | | wait/synch/mutex/innodb/buf_pool_mutex | NO | NO | | wait/synch/mutex/innodb/buf_pool_zip_mutex | NO | NO | | wait/synch/mutex/innodb/cache_last_read_mutex | NO | NO | | wait/synch/mutex/innodb/dict_foreign_err_mutex | NO | NO | | wait/synch/mutex/innodb/dict_sys_mutex | NO | NO | | wait/synch/mutex/innodb/recalc_pool_mutex | NO | NO | | wait/synch/mutex/innodb/file_format_max_mutex | NO | NO | ... | wait/io/file/innodb/innodb_data_file | YES | YES | | wait/io/file/innodb/innodb_log_file | YES | YES | | wait/io/file/innodb/innodb_temp_file | YES | YES | | stage/innodb/alter table (end) | YES | YES | | stage/innodb/alter table (flush) | YES | YES | | stage/innodb/alter table (insert) | YES | YES | | stage/innodb/alter table (log apply index) | YES | YES | | stage/innodb/alter table (log apply table) | YES | YES | | stage/innodb/alter table (merge sort) | YES | YES | | stage/innodb/alter table (read PK and internal sort) | YES | YES | | stage/innodb/buffer pool load | YES | YES | | memory/innodb/buf_buf_pool | NO | NO | | memory/innodb/dict_stats_bg_recalc_pool_t | NO | NO | | memory/innodb/dict_stats_index_map_t | NO | NO | | memory/innodb/dict_stats_n_diff_on_level | NO | NO | | memory/innodb/other | NO | NO | | memory/innodb/row_log_buf | NO | NO | | memory/innodb/row_merge_sort | NO | NO | | memory/innodb/std | NO | NO | | memory/innodb/sync_debug_latches | NO | NO | | memory/innodb/trx_sys_t::rw_trx_ids | NO | NO | ... +-------------------------------------------------------+---------+-------+ 155 rows in set (0.00 sec)
有关检测
InnoDB
对象的其他信息,您可以查询 Performance Schema 实例表,它提供有关检测对象的其他信息。相关实例表InnoDB
包括:mutex_instances
桌子 _rwlock_instances
桌子 _cond_instances
桌子 _file_instances
桌子 _
笔记与缓冲池相关的互斥锁和 RW 锁
InnoDB
不在此范围内;这同样适用于SHOW ENGINE INNODB MUTEX
命令的输出。例如,要查看有关
InnoDB
在执行文件 I/O 检测时性能模式看到的检测文件对象的信息,您可以发出以下查询:mysql> SELECT * FROM performance_schema.file_instances WHERE EVENT_NAME LIKE '%innodb%'\G *************************** 1. row *************************** FILE_NAME: /path/to/mysql-5.7/data/ibdata1 EVENT_NAME: wait/io/file/innodb/innodb_data_file OPEN_COUNT: 3 *************************** 2. row *************************** FILE_NAME: /path/to/mysql-5.7/data/ib_logfile0 EVENT_NAME: wait/io/file/innodb/innodb_log_file OPEN_COUNT: 2 *************************** 3. row *************************** FILE_NAME: /path/to/mysql-5.7/data/ib_logfile1 EVENT_NAME: wait/io/file/innodb/innodb_log_file OPEN_COUNT: 2 *************************** 4. row *************************** FILE_NAME: /path/to/mysql-5.7/data/mysql/engine_cost.ibd EVENT_NAME: wait/io/file/innodb/innodb_data_file OPEN_COUNT: 3 ...
您应该熟悉
performance_schema
存储InnoDB
事件数据的表。与相关事件相关的表格InnoDB
包括:等待事件 表,用于存储等待事件。
摘要 表,提供随时间推移终止的事件的汇总信息。汇总表包括 文件 I/O 汇总表,它汇总了有关 I/O 操作的信息。
阶段事件表,存储事件数据
InnoDB
ALTER TABLE
和缓冲池加载操作。有关详细信息,请参阅 第 14.17.1 节,“使用性能模式监视 InnoDB 表的 ALTER TABLE 进度”和 使用性能模式监视缓冲池加载进度。
如果您只对 - 相关的对象感兴趣,请在查询这些表时
InnoDB
使用子句WHERE EVENT_NAME LIKE '%innodb%'
或(根据需要)。WHERE NAME LIKE '%innodb%'