パフォーマンス・ハブを使用したSQLパフォーマンスの分析
パフォーマンス・ハブを使用して、SQLパフォーマンスを監視および分析し、パフォーマンス問題の可視性を高めることができます。
HeatWaveおよび外部MySQL DBシステムのパフォーマンス・ハブには、選択した期間のSQL文情報が表示されます。パフォーマンス・ハブを使用すると、問合せパフォーマンスを監視することで、データベース・アプリケーションのパフォーマンスを向上させることができます。これにより、低速化の根本原因であるSQLコードを正確に特定し、アクティブな開発中にSQLコードを改善し、本番システムで実行されている問合せを継続的に監視およびチューニングできます。
パフォーマンス・ハブに移動するには、データベース管理のMySQLデータベースの詳細ページで「パフォーマンス・ハブ」をクリックします。詳細は、単一のHeatWaveまたは外部のMySQL DB Systemのモニターを参照してください。
- データベース管理対応のHeatWave DBシステムの場合、HeatWaveサービスのDBシステムの詳細ページからパフォーマンス・ハブにアクセスすることもできます。
- HeatWave DBシステムの場合、実行計画やダイジェスト・エラーの詳細などのパフォーマンス・ハブ機能を使用できるのは、データベース管理を有効にするときに「完全監視」オプションが選択されている場合のみです。詳細は、HeatWaveのデータベース管理の有効化を参照してください。
- 外部MySQL DBシステムの場合、必要な変数および表がMySQL設定で構成されていること、および実行エラーの詳細や実行計画の表示などのタスクの実行に必要な権限があることを確認します。詳細は、外部MySQL DB System関連の前提条件タスクの実行を参照してください。
パフォーマンス・ハブで、「最終表示」ドロップダウン・リストでオプションを選択して、SQLアクティビティをモニターし、最後に表示されたSQL文を表示する期間を指定します。「最終表示」ドロップダウン・リストで「カスタム」オプションを選択した場合は、過去7日間のカスタム期間を指定できます。「時間範囲」フィールドには、選択した「最終表示」オプションに応じて期間が表示されます。「時間範囲」フィールドをクリックして、過去7日以内のカスタム期間を指定することもできます。パフォーマンス・ハブのデータをリフレッシュするには、右上の「リフレッシュ」をクリックします。
選択した期間に基づいて、関連情報が次のチャートおよびセクションに表示されます。
- 文の平均レイテンシ(秒): DBシステムに対して実行されたSQL文の平均レイテンシ(秒)が表示されます。
右上隅の「チャートの選択」をクリックし、「文の数」を選択して「文の数」チャートを表示します。このチャートには、選択した期間中にDBシステムに対して実行されたSQL文の合計数が表示されます。HeatWave DBシステムの場合、「文数」チャートには、実行のためにHeatWaveにオフロードされたSQL文の数も表示されます。
- <indicator>による上位100: 選択したインジケータ(文の平均待機時間、合計実行数、実行ステータスなど)に基づいて、上位SQL文の集計サマリー情報を表示します。「Top 100 by <indicator>」セクションで、インジケータを選択してそのパフォーマンス・メジャーでSQL文をソートおよびモニターできるため、コストの高い文をすばやく識別できます。データベース管理では、MySQLパフォーマンス・スキーマの
events_statements_summary_by_digest
表に格納されているデータが使用されます。「上位100 by <indicator>」セクションにリストされているSQL文は正規化された文であり、表示されるデータは各文が最初に表示された時点から集計されます。データに基づいて、最も低速、最も頻度の高い、またはリソース集中型のSQL文が表示され、この情報を使用してパフォーマンスの問題を引き起こす文を識別できます。「Top 100 by <indicator>」ドロップダウン・リストの一部のインジケータがデフォルトの列として表示されることに注意してください。デフォルトの列ではないインジケータ(「最初に表示」など)を使用してSQL文をソートすることを選択した場合、最後の列として追加されます。このセクションに表示される情報をさらにカスタマイズするには、「列」ドロップダウン・リストでオプションを選択または選択解除します。HeatWave対応DBシステムの場合、HeatWaveオフロード・ステータス・ドロップダウン・リストでオプションを選択して、SQL文をフィルタすることもできます。
「上位100 by <indicator>」セクションのインジケータまたは列のリストをアルファベット順に示します。
インジケータ/列 説明 平均CPU時間
CPU時間の平均。合計CPU時間を特定のSQL文の実行の合計数(ダイジェストで識別)で除算して計算されます。
ノート: HeatWave DBシステムの場合、このインジケータは、データベース管理を有効にするときに「完全モニタリング」オプションが選択されている場合にのみリストされます。詳細は、HeatWaveのデータベース管理の有効化を参照してください。
また、このインジケータをHeatWave DBシステムに使用するには、次の問合せを実行してCPUインストゥルメントを有効にする必要があります。
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME = 'events_statements_cpu';
外部MySQL DBシステムの場合、このインジケータを使用するには、
events_statements_cpu
コンシューマ・タイプをYES
に設定する必要があります。詳細は、外部MySQL DB System関連の前提条件タスクの実行を参照してください。平均文レイテンシ(デフォルト・インジケータ)
SQL文の実行にかかる平均時間。文のすべての実行で計算されます。
Database SQL文が実行されたデータベースの名前。データベースが指定されていない場合は"-"。これはデフォルトの列であり、インジケータのリストには含まれません。
実行ステータス
SQL文の実行の現在の状態または結果。
SQL文の実行中にエラーが発生した場合、「ステータス」列にエラー・アイコン(
)が表示されます。「ダイジェスト・エラーの詳細」パネルにエラー・コード、発生数およびエラー・メッセージを表示するには、このアイコンをクリックします。MySQL設定で特定の変数または表が構成または有効化されていない場合、エラーの詳細が表示されない場合があります。
初回検出
SQL文が最初に表示された時刻。
HeatWaveオフロード済
HeatWaveインメモリー問合せアクセラレータにオフロードされたSQL文の実行数。
ノート:
events_statements_summary_by_digest
表のデータに加えて、HeatWave対応DBシステムのインジケータ・ドロップダウン・リストにHeatWaveオフロード・ステータスがリストされます。最終検出
SQL文が最後に表示された時刻。
適切な索引が使用されていません
MySQLがSQL文を実行する有効な索引を見つけられなかった合計回数によって、実行計画の効率が低下し、パフォーマンスが低下します。
索引が使用されていません
SQL文の実行に索引が使用されなかった合計回数。
問合せ
正規化されたSQL文。これはデフォルトの列であり、インジケータのリストには含まれません。SQLの詳細を表示するには、文をクリックします。
一時表
SQL文によってインメモリーまたはディスクに作成された内部一時表の合計数。
合計CPU時間
特定のSQL文のすべての実行(ダイジェストで識別)によって消費されるCPU時間の合計。
ノート: HeatWave DBシステムの場合、このインジケータは、データベース管理を有効にするときに「完全モニタリング」オプションが選択されている場合にのみリストされます。詳細は、HeatWaveのデータベース管理の有効化を参照してください。
また、このインジケータをHeatWave DBシステムに使用するには、次の問合せを実行してCPUインストゥルメントを有効にする必要があります。
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME = 'events_statements_cpu';
外部MySQL DBシステムの場合、このインジケータを使用するには、
events_statements_cpu
コンシューマ・タイプをYES
に設定する必要があります。詳細は、外部MySQL DB System関連の前提条件タスクの実行を参照してください。合計実行数
SQL文が実行された合計回数。
影響を受けた行の合計
SQL文によって変更された行数。
調査済行の合計
SQL文によって調査された行数。
送信済行の合計
SQL文から戻された行数。
文の合計レイテンシ
SQL文のすべての実行にかかった合計時間。
選択したパフォーマンス・インジケータによってリストされたSQL文を確認する場合は、「問合せ」列のリンクをクリックして、「SQLの詳細」パネルで目的の単一のSQL文を確認します。「SQLの詳細」パネルには、次の2つのタブがあります。
- 問合せアナライザ: このタブでは、次のことができます:
- 文ダイジェストIDを使用して、問合せを記述し、DBシステムから追加情報を取得します。
- 正規化されたSQL文を表示します。
- 実行時間、行数および一時表に関する詳細情報をモニターします。たとえば、調査または返された行数と、作成された一時テーブルの数を監視できます。
ステートメントのダイジェストについては、Performance Schema Statement Digests and Samplingを参照してください。
- 実行計画: このタブでは、次のことができます。
- サンプルSQL文の詳細(実行日時、所要時間、実行時に渡されたリテラル値を含む実際のSQLなど)を表示します。
- SQL文に対して生成された実行計画を監視します。これにより、SQL文の実行方法に関する貴重なインサイトが提供されます。実行計画を視覚化することで、全表スキャンや非効率的な結合などのパフォーマンスのボトルネックを特定し、文を最適化できます。
デフォルトでは、EXPLAIN出力がグラフィカルに表示され、実行計画の理解、非効率性の特定、および最適化のための情報に基づいた意思決定が容易になります。グラフィカルな実行計画では、実行計画がツリーとして表示され、各ノードは、表スキャン、結合、ソートなど、実行プロセスの特定の操作を表します。ノードは、様々なタイプの操作を表すように色分けされています。各ステップの詳細は、個々のノードをクリックできます。グラフィカルな実行計画を表示する場合は、「ローテーション」をクリックしてダイアグラムを反時計回りに回転します。また、マウス・ホイール、タッチパッドまたは+/- キーを使用して、実行計画ダイアグラムのズーム・インとズーム・アウトを行うこともできます。
「表示オプション」ドロップダウン・リストで、「表形式の実行計画」を選択して、実行計画を表示するか、表形式で文を実行するために使用される一連の操作を表示します。この表は、操作のリストと次の詳細を示しています。
- 表名: 実行中にアクセスされる表の名前。
- タイプ: 実行中に表にアクセスするために使用されるアクセス・メソッドのタイプ。
- キー: 文で使用される索引(ある場合)。
- Ref: 文に結合が含まれている場合、キーと比較される列または定数。
- 行: 操作で処理または戻される予定の行数または実際の行数。
- フィルタ済:
WHERE
句に基づいてフィルタ処理されることが予想される行の割合。 - コスト: 操作の実行の見積コスト。
「表形式の実行計画」ビューに表示される情報をカスタマイズするには、「列」ドロップダウン・リストで列を選択または選択解除します。
- 問合せアナライザ: このタブでは、次のことができます: