このセクションでは、InnoDB
とパフォーマンススキーマの統合について簡単に説明します。 包括的なパフォーマンススキーマドキュメントについては、第27章「MySQL パフォーマンススキーマ」 を参照してください。
MySQL Performance Schema feature を使用して、特定の内部 InnoDB
操作をプロファイルできます。 このタイプのチューニングは、主に最適化戦略を評価してパフォーマンスボトルネックを克服するエキスパートユーザーを対象としています。 DBA はまた、この機能を容量計画に使用することにより、標準的なワークロードのときに CPU、RAM、およびディスクストレージの特定の組み合わせでパフォーマンスのボトルネックが発生するかどうかを確認し、発生する場合は、システムの一部の容量を増やすことでパフォーマンスを向上させることができるかどうかを判断することもできます。
この機能を使用して InnoDB
のパフォーマンスを調べるには:
通常、Performance Schema feature の使用方法に精通している必要があります。 たとえば、インストゥルメントとコンシューマを有効にする方法、および
performance_schema
テーブルをクエリーしてデータを取得する方法を理解する必要があります。 概要については、セクション27.1「パフォーマンススキーマクイックスタート」 を参照してください。-
InnoDB
で使用可能なパフォーマンススキーマインストゥルメントに精通している必要があります。InnoDB
関連のインストゥルメントを表示するには、innodb
を含むインストゥルメント名をsetup_instruments
テーブルにクエリーすることができます。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
オブジェクトに関する追加情報については、インストゥルメントされたオブジェクトに関する追加情報を提供するパフォーマンススキーマ instances tables をクエリーできます。InnoDB
に関連するインスタンステーブルは次のとおりです:mutex_instances
テーブルrwlock_instances
テーブルcond_instances
テーブルfile_instances
テーブル
注記InnoDB
バッファプールに関連する相互排他ロックおよび RW ロックは、このカバレッジには含まれません。これは、SHOW ENGINE INNODB MUTEX
コマンドの出力にも当てはまります。たとえば、ファイル I/O インストゥルメンテーションの実行時にパフォーマンススキーマに表示されるインストゥルメントされた
InnoDB
ファイルオブジェクトに関する情報を表示するには、次のクエリーを発行します: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
イベントデータを格納するperformance_schema
テーブルに精通している必要があります。InnoDB
関連のイベントに関連するテーブルは次のとおりです:待機イベントを格納する Wait Event テーブル。
Summary テーブル。時間の経過とともに終了したイベントの集計情報を提供します。 サマリーテーブルには、I/O 操作に関する情報を集計する file I/O summary tables が含まれます。
Stage Event テーブル:
InnoDB
ALTER TABLE
およびバッファプールロード操作のイベントデータを格納します。 詳細は、セクション15.16.1「パフォーマンススキーマを使用した InnoDB テーブルの ALTER TABLE の進行状況のモニタリング」およびパフォーマンススキーマを使用したバッファプールのロード進行状況の監視を参照してください。
InnoDB
関連のオブジェクトのみに関心がある場合は、これらのテーブルをクエリーするときにWHERE EVENT_NAME LIKE '%innodb%'
句またはWHERE NAME LIKE '%innodb%'
句を (必要に応じて) 使用します。