MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  InnoDB ストレージエンジン  /  InnoDB の MySQL パフォーマンススキーマとの統合

15.16 InnoDB の MySQL パフォーマンススキーマとの統合

このセクションでは、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 関連のイベントに関連するテーブルは次のとおりです:

    InnoDB 関連のオブジェクトのみに関心がある場合は、これらのテーブルをクエリーするときに WHERE EVENT_NAME LIKE '%innodb%'句または WHERE NAME LIKE '%innodb%'句を (必要に応じて) 使用します。


関連キーワード:  InnoDB, テーブル, NO, パフォーマンス, 構成, mutex, スキーマ, file, wait, ロック