スマートスタイル TECH BLOG

データベース&クラウド技術情報

Percona Monitoring and ManagementのQuery Analytics機能紹介②

はじめに

前回の記事に引き続き、Percona Monitoring and Management(以下PMM)のQuery Analytics(以下QAN)について紹介していきます。
QANのソースはスロークエリログかパフォーマンススキーマか選択することができます。
スロークエリログの出力は製品によって異なるため、QANが取得出来るデータにも差異があります。
今回はMySQL,MariaDB,Percona Server for MySQL(以下Percona Server)でそれぞれスロークエリログとパフォーマンススキーマをソースにした場合にどのような情報が表示されるかを調査しました。

検証環境

今回利用したプログラムとバージョンは以下の通りです。
2021/07/29時点の最新バージョンを選択しています。

  • PMM 2.19.0
  • MySQL 8.0.25
  • Percona Server 8.0.25
  • MariaDB 10.6.3

設定

今回は検証のため、より多くの情報がスロークエリログに出力されるように設定しています。
ファイルサイズが肥大化する場合があるため注意してください。
なお、PMMのドキュメントでは設定のサンプルが紹介されています。

MySQL

log_slow_extraをONにすることで、追加のフィールドが出力されます。

MariaDB

log_slow_verbosityはスロークエリログに記録される内容の詳細度を設定します。query_planはクエリプランに関する情報、explainはEXPLAIN出力を記録します。

Percona Server

log_slow_verbosityはスロークエリログに記録される情報量を設定します。fullに設定した場合、全てのオプションが有効化されます。

検証

各DBにSakila Sample Databaseをインポートし、以下のクエリを実行します。

スロークエリログの出力

各DBのスロークエリログの出力は以下の通りです。

MySQL

※一部改行をしています。

MariaDB

Percona Server

QANの表示

QANでどのように表示されるかを見ていきます。
Overview Panelに表示されたクエリを選択すると、画面下部にDetails Panelが表示されます。ここでは選択したクエリの詳細な情報が確認できます。
Details PanelにはDetailsタブExamplesタブExplainタブTablesタブと4つのタブが存在しています。

Detailsタブの表示

Detailsタブにはクエリの実行時間や実行回数など様々なメトリクスが表示されます。DBによって表示される項目が異なります。

MySQL(スロークエリログ)

MariaDB(スロークエリログ)

Percona Server(スロークエリログ)

パフォーマンススキーマ

MySQL,MariaDB,Percona Serverいずれも表示される項目は同じでした。

なお、実行されるクエリの性質によって、Detailsタブに表示される項目は異なります。
そのため、常に図にある項目が表示されるわけではありません。
例えば、以下のクエリをPercona Serverで実行します。

スロークエリログの出力は以下のようになります。

Full_scan: YesFilesort: Noとなっています。
これをQANで確認すると、Full Joinの項目が追加され、Filesortの項目がなくなっていることがわかります。

Examplesタブ、Explainタブ、Tablesタブの表示

ExamplesタブExplainタブTablesタブはそれぞれ以下の内容が表示されます。

  • Examplesタブ:選択したクエリの例を表示
  • Explainタブ:選択したクエリのEXPLAIN出力を表示
  • Tablesタブ:選択したクエリのテーブル、インデックスの情報を表示

    これらのタブの情報はDB、ソースによっては表示されない場合があります。

MySQL(スロークエリログ)

  • Examplesタブは情報が表示されます。
  • ExplainタブとTablesタブは情報が表示されません。

MySQLの場合、スロークエリログにスキーマの情報が出力されません。
(MariaDB、Percona ServerのスロークエリログにはSchema: sakilaと出力されています。)
そのため、ExplainタブとTablesタブの情報は表示されません。
この問題はPMM-4832で報告されています。

MySQL(パフォーマンススキーマ)

  • ExamplesタブとExplainタブは情報が表示されます。
  • Tablesタブは一部クエリのみ表示されます。

MariaDB(スロークエリログ)

  • ExamplesタブとExplainタブは情報が表示されます。
  • Tablesタブは一部クエリのみ表示されます。

MariaDB(パフォーマンススキーマ)

  • Examplesタブ、Explainタブ、Tablesタブすべての情報が表示されません。

performance_schema.events_statements_summary_by_digest のテーブル定義が他と異なることが原因のようです。
この問題はPMM-8203で報告されています。

Percona Server(スロークエリログ)

  • Examplesタブは情報が表示されます。
  • Explainタブ、Tablesタブは一部クエリのみ表示されます。

この問題はPMM-8467で報告されています。

Percona Server(パフォーマンススキーマ)

  • Examplesタブは情報が表示されます。
  • Explainタブ、Tablesタブは一部クエリのみ表示されます。

この問題はPMM-8467で報告されています。

Filters Panelの表示

QANの左側にはFilters Panelがあります。

MySQLでスロークエリログをソースとする場合、前述した通り、スロークエリログの出力にSchemaに関する情報が含まれないため、Schemaでフィルタリングすることができません。
全てn/aとなります。

また、User NameとClient Hostはそれぞれクエリを実行したユーザーとホストとなりますが、パフォーマンススキーマからはこれらの情報は収集しません。
そのため、パフォーマンススキーマをソースとしている場合は、User NameとClient Hostでフィルタリングすることはできません。

一覧

各ソースごとにPMMで参照できる情報
※スロークエリログ=log、パフォーマンススキーマ=P_S

MySQL MariaDB Percona Server
log P_S log P_S log P_S
Examplesタブ ×
Explainタブ × ×
Tablesタブ × ×
Filters(schema) ×
Filters(user,host) × × ×

まとめ

MySQL、MariaDBの場合、今回確認したクエリでは、スロークエリログをソースとしたときより、パフォーマンススキーマをソースとしたときの方がDetailsタブには多くの項目が表示されました。
一方、Filters Panelで使用できるユーザー情報やMariaDBのExamplesタブなどスロークエリログをソースとしたときのみ表示される情報もありました。
QANのソースに迷った場合、どういった情報を使用してクエリの分析を行いたいかをもとに決めてみてはいかがでしょうか。


Percona

 

Return Top