Documentation Home
MySQL 8.0 参考手册  / 第 15 章 InnoDB 存储引擎  /  14.16 InnoDB 与 MySQL 性能模式的集成

14.16 InnoDB 与 MySQL 性能模式的集成

本节简要介绍 InnoDB与 Performance Schema 的集成。有关全面的性能模式文档,请参阅 第 22 章,MySQL 性能模式

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

要使用此功能检查InnoDB 性能:

  • 您必须大致熟悉如何使用 性能模式功能。例如,您应该知道如何启用工具和消费者,以及如何查询 performance_schema表以检索数据。有关介绍性概述,请参阅 第 22.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/file_format_max_mutex         | NO      | NO    |
    | wait/synch/mutex/innodb/fil_system_mutex              | NO      | NO    |
    | wait/synch/mutex/innodb/flush_list_mutex              | NO      | NO    |
    | wait/synch/mutex/innodb/fts_bg_threads_mutex          | NO      | NO    |
    | wait/synch/mutex/innodb/fts_delete_mutex              | NO      | NO    |
    | wait/synch/mutex/innodb/fts_optimize_mutex            | NO      | NO    |
    ...
    | wait/synch/rwlock/innodb/btr_search_latch             | NO      | NO    |
    | wait/synch/rwlock/innodb/dict_operation_lock          | NO      | NO    |
    | wait/synch/rwlock/innodb/fil_space_latch              | NO      | NO    |
    | wait/synch/rwlock/innodb/checkpoint_lock              | NO      | NO    |
    | wait/synch/rwlock/innodb/fts_cache_rw_lock            | NO      | NO    |
    | wait/synch/rwlock/innodb/fts_cache_init_rw_lock       | NO      | NO    |
    | wait/synch/rwlock/innodb/trx_i_s_cache_lock           | NO      | NO    |
    | wait/synch/rwlock/innodb/trx_purge_latch              | NO      | NO    |
    | wait/synch/rwlock/innodb/index_tree_rw_lock           | NO      | NO    |
    | wait/synch/rwlock/innodb/index_online_log             | NO      | NO    |
    | wait/synch/rwlock/innodb/dict_table_stats             | NO      | NO    |
    | wait/synch/rwlock/innodb/hash_table_locks             | NO      | NO    |
    | wait/synch/cond/innodb/commit_cond                    | 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   |
    +-------------------------------------------------------+---------+-------+
    62 rows in set (0.00 sec)

    有关检测 InnoDB对象的其他信息,您可以查询 Performance Schema 实例表,它提供有关检测对象的其他信息。相关实例表 InnoDB包括:

    笔记

    与缓冲池相关的互斥锁和 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.6/data/ibdata1
    EVENT_NAME: wait/io/file/innodb/innodb_data_file
    OPEN_COUNT: 2
    *************************** 2. row ***************************
     FILE_NAME: /path/to/mysql-5.6/data/ib_logfile0
    EVENT_NAME: wait/io/file/innodb/innodb_log_file
    OPEN_COUNT: 2
    *************************** 3. row ***************************
     FILE_NAME: /path/to/mysql-5.6/data/ib_logfile1
    EVENT_NAME: wait/io/file/innodb/innodb_log_file
    OPEN_COUNT: 2
    ...
  • 您应该熟悉 performance_schema存储 InnoDB事件数据的表。与相关事件相关的表格 InnoDB包括:

    • 等待事件 表,用于存储等待事件。

    • 摘要 表,提供随时间推移终止的事件的汇总信息汇总表包括 文件 I/O 汇总表,它汇总了有关 I/O 操作的信息。

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