文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  InnoDB 存储引擎  /  InnoDB 与 MySQL 性能模式集成

17.16 InnoDB 与 MySQL 性能模式集成

本节简要介绍了 InnoDB 与性能模式的集成。有关性能模式的完整文档,请参阅第 29 章 MySQL 性能模式

您可以使用 MySQL 性能模式功能分析某些内部 InnoDB 操作。这种类型的调整主要面向评估优化策略以克服性能瓶颈的专家用户。DBA 还可以使用此功能进行容量规划,以查看其典型工作负载是否在 CPU、RAM 和磁盘存储的特定组合下遇到任何性能瓶颈;如果是,则判断是否可以通过增加系统某些部分的容量来提高性能。

要使用此功能检查 InnoDB 性能,请执行以下操作

  • 您必须大致熟悉如何使用性能模式功能。例如,您应该知道如何启用监测点和使用者,以及如何查询 performance_schema 表以检索数据。有关介绍性概述,请参阅第 29.1 节“性能模式快速入门”

  • 您应该熟悉可用于 InnoDB 的性能模式监测点。要查看与 InnoDB 相关的监测点,您可以查询setup_instruments 表中名称包含“innodb”的监测点。

    Press CTRL+C to copy
    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/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 对象的其他信息,您可以查询性能模式实例表,这些表提供了有关已监测对象的附加信息。与 InnoDB 相关的实例表包括:

    注意

    InnoDB 缓冲池相关的互斥锁和读写锁不包括在此范围内;SHOW ENGINE INNODB MUTEX 语句的输出也是如此。

    例如,要查看性能模式在执行文件 I/O 监测时看到的已监测 InnoDB 文件对象的有关信息,您可以发出以下查询:

    Press CTRL+C to copy
    mysql> SELECT * FROM performance_schema.file_instances WHERE EVENT_NAME LIKE '%innodb%'\G *************************** 1. row *************************** FILE_NAME: /home/dtprice/mysql-8.4/data/ibdata1 EVENT_NAME: wait/io/file/innodb/innodb_data_file OPEN_COUNT: 3 *************************** 2. row *************************** FILE_NAME: /home/dtprice/mysql-8.4/data/#ib_16384_0.dblwr EVENT_NAME: wait/io/file/innodb/innodb_dblwr_file OPEN_COUNT: 2 *************************** 3. row *************************** FILE_NAME: /home/dtprice/mysql-8.4/data/#ib_16384_1.dblwr EVENT_NAME: wait/io/file/mysql-8.4/innodb_dblwr_file OPEN_COUNT: 2 ...
  • 您应该熟悉存储 InnoDB 事件数据的 performance_schema 表。与 InnoDB 相关事件相关的表包括:

    如果您只对与 InnoDB 相关的对象感兴趣,请在查询这些表时使用子句 WHERE EVENT_NAME LIKE '%innodb%'WHERE NAME LIKE '%innodb%'(根据需要)。