Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  The InnoDB Storage Engine  /  InnoDB Integration with MySQL Performance Schema

17.16 InnoDB 与 MySQL 性能架构集成

本节简要介绍了 InnoDB 与性能架构的集成。有关性能架构的详细文档,请参阅 第 29 章,MySQL 性能架构

您可以使用 MySQL 性能架构功能 来分析某些内部 InnoDB 操作。这类调整主要面向专家用户,旨在评估优化策略以克服性能瓶颈。DBA 也可以使用该功能进行容量规划,以判断典型工作负载是否会遇到某些性能瓶颈,并判断是否可以通过增加系统某些部分的容量来提高性能。

要使用该功能来检查 InnoDB 性能:

  • 您必须熟悉如何使用 性能架构功能。例如,您应该知道如何启用仪器和消费者,以及如何查询 performance_schema 表以检索数据。有关入门概述,请参阅 第 29.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/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 相关的实例表包括:

    Note

    互斥锁和 RW 锁与 InnoDB 缓冲池相关的信息不包括在本节中;同样,SHOW ENGINE INNODB MUTEX 命令的输出也不包括在内。

    例如,要查看性能架构在执行文件 I/O 仪器时看到的仪器化 InnoDB 文件对象的信息,您可以发出以下查询:

    mysql> SELECT *
           FROM performance_schema.file_instances
           WHERE EVENT_NAME LIKE '%innodb%'\G
    *************************** 1. row ***************************
     FILE_NAME: /home/dtprice/mysql-8.3/data/ibdata1
    EVENT_NAME: wait/io/file/innodb/innodb_data_file
    OPEN_COUNT: 3
    *************************** 2. row ***************************
     FILE_NAME: /home/dtprice/mysql-8.3/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.3/data/#ib_16384_1.dblwr
    EVENT_NAME: wait/io/file/mysql-8.3/innodb_dblwr_file
    OPEN_COUNT: 2
    ...
  • 您应该熟悉 performance_schema 表,它们存储 InnoDB 事件数据。与 InnoDB 相关的事件表包括:

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