文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  InnoDB 儲存引擎  /  InnoDB 與 MySQL Performance Schema 的整合

17.16 InnoDB 與 MySQL Performance Schema 的整合

本節簡要介紹 InnoDB 與 Performance Schema 的整合。如需完整的 Performance Schema 文件,請參閱第 29 章,MySQL Performance Schema

您可以使用 MySQL Performance Schema 功能分析某些內部 InnoDB 操作。此類調整主要適用於評估最佳化策略以克服效能瓶頸的專家使用者。DBA 也可以使用此功能進行容量規劃,以查看其典型工作負載在特定的 CPU、RAM 和磁碟儲存組合中是否遇到任何效能瓶頸;如果是,則判斷是否可以透過增加系統某些部分的容量來提高效能。

若要使用此功能檢查 InnoDB 效能

  • 您必須大致熟悉如何使用Performance Schema 功能。例如,您應該知道如何啟用工具和消費者,以及如何查詢 performance_schema 表格以擷取資料。如需入門概述,請參閱第 29.1 節,「Performance Schema 快速入門」

  • 您應該熟悉可供 InnoDB 使用的 Performance Schema 工具。若要檢視與 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 物件的其他資訊,您可以查詢 Performance Schema 實例表格,其中提供有關檢測物件的其他資訊。與 InnoDB 相關的實例表格包括

    注意

    InnoDB 緩衝池相關的互斥鎖和讀寫鎖不包含在此涵蓋範圍內;SHOW ENGINE INNODB MUTEX 語句的輸出亦是如此。

    例如,若要檢視 Performance Schema 在執行檔案 I/O 檢測時看到的已檢測 InnoDB 檔案物件的相關資訊,您可以發出下列查詢:

    mysql> SELECT *
           FROM performance_schema.file_instances
           WHERE EVENT_NAME LIKE '%innodb%'\G
    *************************** 1. row ***************************
     FILE_NAME: /home/dtprice/mysql-9.0/data/ibdata1
    EVENT_NAME: wait/io/file/innodb/innodb_data_file
    OPEN_COUNT: 3
    *************************** 2. row ***************************
     FILE_NAME: /home/dtprice/mysql-9.0/data/#ib_16384_0.dblwr
    EVENT_NAME: wait/io/file/innodb/innodb_dblwr_file
    OPEN_COUNT: 2
    *************************** 3. row ***************************
     FILE_NAME: /home/dtprice/mysql-9.0/data/#ib_16384_1.dblwr
    EVENT_NAME: wait/io/file/mysql-9.0/innodb_dblwr_file
    OPEN_COUNT: 2
    ...
  • 您應該熟悉儲存 InnoDB 事件資料的 performance_schema 表格。與 InnoDB 相關事件有關的表格包括:

    如果您只對與 InnoDB 相關的物件感興趣,請在查詢這些表格時使用子句 WHERE EVENT_NAME LIKE '%innodb%'WHERE NAME LIKE '%innodb%'(視需要)。