## 15.16 InnoDB 与 MySQL 性能模式的集成

[15.16.1 使用性能模式监控 InnoDB 表的 ALTER TABLE 进度](monitor-alter-table-performance-schema.html)
[15.16.2 使用性能模式监控 InnoDB Mutex 等待](monitor-innodb-mutex-waits-performance-schema.html)

[](<>)

本节简要介绍`InnoDB`与性能模式集成。有关全面的性能模式文档，请参阅[第 27 章，*MySQL 性能模式*](performance-schema.html).

您可以分析某些内部`InnoDB`使用 MySQL 的操作[性能模式功能](performance-schema.html).这种类型的调优主要针对评估优化策略以克服性能瓶颈的专家用户。DBA 还可以使用此功能进行容量规划，以查看他们的典型工作负载是否遇到 CPU、RAM 和磁盘存储的特定组合的任何性能瓶颈；如果可以，判断是否可以通过增加系统某些部分的容量来提高性能。

使用此功能检查`InnoDB`表现：

-   您必须通常熟悉如何使用[性能模式功能](performance-schema.html).例如，您应该知道如何启用工具和消费者，以及如何查询`性能模式`表来检索数据。有关介绍性概述，请参阅[第 27.1 节，“性能模式快速入门”](performance-schema-quick-start.html).

-   您应该熟悉可用于`InnoDB`.查看`InnoDB`相关仪器，可以查询[`setup_instruments`](performance-schema-setup-instruments-table.html)包含 ' 的仪器名称表`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`对象，可以查询 Performance Schema[实例表](performance-schema-instance-tables.html)，它提供有关检测对象的附加信息。相关的实例表`InnoDB`包括：

    -   这[`互斥实例`](performance-schema-mutex-instances-table.html)桌子

    -   这[`rwlock_instances`](performance-schema-rwlock-instances-table.html)桌子

    -   这[`条件实例`](performance-schema-cond-instances-table.html)桌子

    -   这[`文件实例`](performance-schema-file-instances-table.html)桌子

    笔记

    与`InnoDB`缓冲池不包括在此覆盖范围内；这同样适用于`显示引擎 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-8.0/data/ibdata1
    EVENT_NAME: wait/io/file/innodb/innodb_data_file
    OPEN_COUNT: 3
    *************************** 2. row ***************************
     FILE_NAME: /path/to/mysql-8.0/data/ib_logfile0
    EVENT_NAME: wait/io/file/innodb/innodb_log_file
    OPEN_COUNT: 2
    *************************** 3. row ***************************
     FILE_NAME: /path/to/mysql-8.0/data/ib_logfile1
    EVENT_NAME: wait/io/file/innodb/innodb_log_file
    OPEN_COUNT: 2
    *************************** 4. row ***************************
     FILE_NAME: /path/to/mysql-8.0/data/mysql/engine_cost.ibd
    EVENT_NAME: wait/io/file/innodb/innodb_data_file
    OPEN_COUNT: 3
    ...
    ```

-   你应该熟悉`性能模式`存储的表`InnoDB`事件数据。相关表格`InnoDB`- 相关事件包括：

    -   这[等待事件](performance-schema-wait-tables.html)存储等待事件的表。

    -   这[概括](performance-schema-summary-tables.html)表，提供随时间终止的事件的汇总信息。汇总表包括[文件 I/O 汇总表](performance-schema-file-summary-tables.html)，它聚合有关 I/O 操作的信息。

    -   [舞台活动](performance-schema-stage-tables.html)表，用于存储事件数据`InnoDB` [`更改表`](alter-table.html)和缓冲池加载操作。有关详细信息，请参阅[第 15.16.1 节，“使用性能模式监控 InnoDB 表的 ALTER TABLE 进度”](monitor-alter-table-performance-schema.html)， 和[使用性能模式监控缓冲池加载进度](innodb-preload-buffer-pool.html#monitor-buffer-pool-load-performance-schema).

        如果你只对`InnoDB`- 相关对象，使用从句`WHERE EVENT_NAME LIKE '%innodb%'`要么`WHERE NAME LIKE '%innodb%'`（根据需要）查询这些表时。
