本節簡要介紹 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
相關的實例資料表包括mutex_instances
資料表rwlock_instances
資料表cond_instances
資料表file_instances
資料表
注意與
InnoDB
緩衝池相關的互斥鎖和 RW 鎖定不包含在此範圍內;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-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
相關的事件表格包括:等待事件表格,它儲存等待事件。
摘要表格,它提供已終止事件隨時間的彙總資訊。摘要表格包括 檔案 I/O 摘要表格,它彙總有關 I/O 操作的資訊。
階段事件表格,它儲存
InnoDB
ALTER TABLE
和緩衝池載入操作的事件資料。如需更多資訊,請參閱 章節 17.16.1,「使用效能架構監控 InnoDB 表格的 ALTER TABLE 進度」 和 使用效能架構監控緩衝池載入進度。
如果您只對與
InnoDB
相關的物件感興趣,請在查詢這些表格時使用子句WHERE EVENT_NAME LIKE '%innodb%'
或WHERE NAME LIKE '%innodb%'
(根據需要)。