すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:パフォーマンスインサイト

最終更新日:Jan 11, 2024

このトピックでは、Performance Insight機能を使用して、ApsaraDBインスタンスのワークロードを監視し、関連付け分析を実行し、パフォーマンスを最適化する方法について説明します。 この機能は、RDSインスタンスのワークロードを迅速に評価し、パフォーマンスの問題を特定してサービスの安定性を確保するのに役立ちます。

前提条件

  • RDSインスタンスは、次のいずれかのMySQLバージョンを実行します。
    • MySQL 8.0
    • MySQL 5.7
  • RDSインスタンスのマイナーエンジンバージョンが20190915以降です。
    説明 RDSインスタンスのマイナーエンジンバージョンを表示するには、ApsaraDB RDSコンソールにログインし、[基本情報] ページに移動します。 ページの [構成情報] セクションで、[カーネルバージョンのアップグレード] ボタンが表示されているかどうかを確認できます。 ボタンが表示されている場合は、ボタンをクリックして、RDSインスタンスのマイナーエンジンバージョンを表示および更新できます。 ボタンが表示されない場合、RDSインスタンスは最新のマイナーエンジンバージョンを実行します。 詳細については、「マイナーエンジンバージョンの更新」をご参照ください。

概要

パフォーマンスインサイト機能は、次の2つの部分で構成されます。

  • オブジェクト統計
    Object Statisticsは、インデックスと次のテーブルから統計を照会します。
    • TABLE_STATISTICS: 読み取りデータと変更データを含む行を記録します。
    • INDEX_STATISTICS: インデックスから読み取ったデータを含む行を記録します。
  • パフォーマンスポイント
    パフォーマンスポイントは、RDSインスタンスのパフォーマンスの詳細を収集します。 これらの詳細を使用して、SQL文のオーバーヘッドを迅速かつ正確に定量化できます。 パフォーマンスポイントは、次の3つの要素からデータベースのパフォーマンスを測定します。
    • CPU: SQLステートメントの実行に費やされた合計時間と、SQLステートメントの実行に費やされた時間が含まれます。
    • ロック: サーバー上のメタデータロック、ストレージトランザクションロック、デバッグモードのみの相互除外、リーダー /ライターロックなどのロックが占有する時間が含まれます。
    • I/O: データファイルの読み取りと書き込み、ログファイルの書き込み、バイナリログの読み取り、redoログの読み取り、redoログの非同期読み取りなどの操作を実行するのにかかる時間が含まれます。

オブジェクト統計の使用

  1. OPT_TABLESTATおよびOPT_INDEXSTATパラメーターの値がONであることを確認します。 例:
    mysql> "opt _%_ stat" のような変数を表示します。
      +---------------+-------+
      | Variable_name | Value |
      +---------------+-------+
      | opt_indexstat | ON |
      | opt_tablestat | ON |
      +---------------+-------+
  2. information_schemaデータベースのTABLE_STATISTICSテーブルまたはINDEX_STATISTICSテーブルを照会して、テーブル統計またはインデックス統計を取得します。 例:
    mysql> select * from TABLE_STATISTICS limit 10;
      +--------------+--------------+-----------+--------------+------------------------+---------------+--------------+--------------+
      | TABLE_SCHEMA | TABLE_NAME | ROWS_READ | ROWS_CHANGED_X_INDEXES | ROWS_INSERTED | ROWS_DELETED | ROWS_UPDATED |
      +--------------+--------------+-----------+--------------+------------------------+---------------+--------------+--------------+
      | mysql | db | 2 | 0 | 0 | 0 | 0 | 0 |
      | mysql | engine_cost | 2 | 0 | 0 | 0 | 0 | 0 |
      | mysql | proxies_priv | 1 | 0 | 0 | 0 | 0 | 0 |
      | mysql | server_cost | 6 | 0 | 0 | 0 | 0 | 0 |
      | mysql | tables_priv | 2 | 0 | 0 | 0 | 0 | 0 |
      | mysql | ユーザー | 7 | 0 | 0 | 0 | 0 | 0 |
      | test | sbtest1 | 1686 | 142 | 184 | 112 | 12 | 18 |
      | test | sbtest10 | 1806 | 125 | 150 | 105 | 5 | 15 |
      | test | sbtest100 | 1623 | 141 | 182 | 110 | 10 | 21 |
      | test | sbtest11 | 1254 | 136 | 172 | 110 | 10 | 16 |
      +--------------+--------------+-----------+--------------+------------------------+---------------+--------------+--------------+
    
      mysql> select * from INDEX_STATISTICS limit 10;
      +--------------+--------------+------------+-----------+
      | TABLE_SCHEMA | TABLE_NAME | INDEX_NAME | ROWS_READ |
      +--------------+--------------+------------+-----------+
      | mysql | db | PRIMARY | 2 |
      | mysql | engine_cost | PRIMARY | 2 |
      | mysql | proxies_priv | PRIMARY | 1 |
      | mysql | server_cost | PRIMARY | 6 |
      | mysql | tables_priv | PRIMARY | 2 |
      | mysql | ユーザー | PRIMARY | 7 |
      | test | sbtest1 | PRIMARY | 2500 |
      | test | sbtest10 | PRIMARY | 3007 |
      | test | sbtest100 | PRIMARY | 2642 |
      | test | sbtest11 | PRIMARY | 2091 |
      +--------------+--------------+------------+-----------+

    次の表に、前述の例のパラメーターを示します。

    パラメーター説明
    テーブル_スキーマデータベースの名前。
    TABLE_NAMEテーブルの名前。
    ROWS_READテーブルから読み取られた行の数。
    ROWS_CHANGEDテーブルで変更された行数。
    ROWS_CHANGED_X_インデックステーブル内のインデックスを使用して変更された行数。
    ROWS_挿入テーブルに挿入された行の数。
    ROWS_DELETEDテーブルから削除された行の数。
    ROWS_更新テーブルで更新された行数。
    INDEX_NAMEインデックスの名前。

パフォーマンスポイントの使用

  1. RDSインスタンスのグローバル変数設定を表示します。
    mysql> "% performance_point %" のような変数を表示します。
      +---------------------------------------+-------+
      | Variable_name | 値 |
      +---------------------------------------+-------+
      | performance_point_dbug_enabled | オフ |
      | performance_point_enabled | ON |
      | performance_point_iostat_interval | 2 |
      | performance_point_iostat_volume_size | 10000 |
      | performance_point_lock_rwlock_enabled | オン |
      +---------------------------------------+-------+
    説明 これらの変数が見つからない場合は、RDSインスタンスが前提条件セクションに記載されているバージョン要件を満たしているかどうかを確認してください。
  2. performance_schemaデータベースのevents_statements_summary_by_digest_supplementテーブルを照会して、さまざまなディメンションの上位10個のSQL文を取得します。 例:
    mysql> select * from events_statements_summary_by_digest_supplement limit 10;
      +--------------------+----------------------------------+-------------------------------------------+--------------+
      | SCHEMA_NAME | DIGEST | DIGEST_TEXT | ELAPSED_TIME | ......
      +--------------------+----------------------------------+-------------------------------------------+--------------+
      | NULL | 6b787dd1f9c6f6c5033120760a1a82de | SELECT @ @ 'version_comment' LIMIT?        | 932 |
      | NULL | 2fb4341654df6995113d998c52e5abc9 | ショースキーマ | 2363 |
      | NULL | 8a93e76a7846384621567fb4daa1bf95 | SHOW VARIABLES LIKE?                     | 17933 |
      | NULL | dd148234ac7a20cb5aee7720fb44b7ea | SELECT SCHEMA ( ) | 1006 |
      | information_schema | 2fb4341654df6995113d998c52e5abc9 | SHOW SCHEMAS | 2156 |
      | information_schema | 74af182f3a2bd265678d3dadb53e08da | ショーテーブル | 3161 |
      | information_schema | d3a66515192fcb100aaef6f8b6e45603 | SELECT * FROM 'TABLE_STATISTS 'LIMIT?  | 2081 |
      | information_schema | b3726b7c4c4db4b309de2dbc45ff52af | SELECT * FROM 'INDEX_STATISTS 'LIMIT?  | 2384 |
      | information_schema | dd148234ac7a20cb5aee7720fb44b7ea | SELECT SCHEMA ( ) | 129 |
      | test | 2fb4341654df6995113d998c52e5abc9 | ショースキーマ | 342 |
      +--------------------+----------------------------------+-------------------------------------------+--------------+

    次の表に、前述の例のパラメーターを示します。

    パラメーター説明
    スキーマ_名前データベースの名前。
    ダイジェストDIGEST_TEXTパラメーターから取得した64バイトのハッシュ文字列。
    DIGEST_TEXTSQL文のダイジェスト。
    ELAPSED_TIMESQL文の実行に費やされた合計時間。 単位:マイクロ秒。
    CPU_時間CPUがSQL文を実行するのに費やした時間。 単位:マイクロ秒。
    SERVER_LOCK_TIMESQL文の実行中にサーバー上でメタデータロックが占める時間。 単位:マイクロ秒。
    TRANSACTION_LOCK_TIMESQL文の実行中にストレージトランザクションがロックする時間。 単位:マイクロ秒。
    MUTEX_スピンSQL文の実行中にトリガーされたミューテックススピンの数。
    MUTEX_WAITSSQL文の実行中にミューテックスによってトリガーされるスピン待機の数。
    RWLOCK_SPIN_WAITSSQL文の実行中にリーダー書き込みロックによってトリガーされるスピン待機の数。
    RWLOCK_SPIN_ROUNDSSQL文の実行中にリーダー書き込みロックによってトリガーされたスピン待機サイクルでバックグラウンドスレッドがループしたラウンドの数。
    RWLOCK_OS_WAITSSQL文の実行中にリーダー書き込みロックによってトリガーされるオペレーティングシステムの待機数。
    DATA_READSSQL文の実行中にシステムがデータファイルからデータを読み取った回数。
    DATA_READ_TIMESQL文の実行中にデータファイルからデータを読み取るのに費やされた時間。 単位:マイクロ秒。
    DATA_WRITESSQL文の実行中にシステムがデータファイルにデータを書き込んだ回数。
    DATA_WRITE_TIMESQL文の実行中にデータファイルにデータを書き込むのに費やされた時間。 単位:マイクロ秒。
    REDO_書き込みSQL文の実行中にシステムがログファイルにデータを書き込んだ回数。
    REDO_WRITE_TIMESQL文の実行中にログファイルにデータを書き込むのに費やされた時間。 単位:マイクロ秒。
    LOGICAL_READSSQL文の実行中にシステムが論理ページを読み取った回数。
    PHYSICAL_READSSQL文の実行中にシステムが物理ページを読み取った回数。
    PHYSICAL_ASYNC_リードSQL文の実行中にシステムが物理非同期ページを読み取った回数。
  3. information_schemaデータベースのIO_STATISTICSテーブルを照会して、最近のデータの読み取りおよび書き込み操作に関する情報を取得します。例:
    mysql> select * from IO_STATISTICS limit 10;
      +---------------------+-----------+----------------+
      | タイム | DATA_READ | DATA_READ_TIME |...
      +---------------------+-----------+----------------+
      | 2019-08-08 09:56:53 | 73 | 983 |
      | 2019-08-08 09:56:57 | 0 | 0 |
      | 2019-08-08 09:59:17 | 0 | 0 |
      | 2019-08-08 10:00:55 | 4072 | 40628 |
      | 2019-08-08 10:00:59 | 0 | 0 |
      | 2019-08-08 10:01:09 | 562 | 5800 |
      | 2019-08-08 10:01:11 | 606 | 6910 |
      | 2019-08-08 10:01:13 | 609 | 6875 |
      | 2019-08-08 10:01:15 | 625 | 7077 |
      | 2019-08-08 10:01:17 | 616 | 5800 |
      +---------------------+-----------+----------------+

    次の表に、前述の例のパラメーターを示します。

    パラメーター説明
    タイム日付。
    DATA_READシステムがデータを読み取った回数。
    DATA_READ_TIMEデータの読み取りに費やされた合計時間。 単位:マイクロ秒。
    DATA_READ_MAX_TIMEデータの読み取りに費やされた最大時間。 単位:マイクロ秒。
    DATA_READ_BYTES読み取られたデータの合計量。 単位:バイト
    DATA_WRITEシステムがデータを書き込んだ回数。
    DATA_WRITE_TIMEデータの書き込みに費やされた合計時間。 単位:マイクロ秒。
    DATA_WRITE_MAX_TIMEデータの書き込みに費やされた最大時間。 単位:マイクロ秒。
    DATA_WRITE_BYTES書き込まれたデータの総量。 単位:バイト