MariaDBのデータベースパフォーマンスを最大化せよ!events_statements_summary_by_account_by_event_nameテーブルでSQL文を徹底チューニング
パフォーマンス分析とトラブルシューティングに役立ちます。
主な用途
- 特定のユーザーまたはホストによるデータベースの使用状況を監視する
- パフォーマンスのボトルネックを特定する
- 特定のタイプの SQL 文の実行にかかる時間を分析する
- 特定のユーザーまたはホストによって実行された SQL 文の数を特定する
テーブル構造
カラム名 | データ型 | 説明 |
---|---|---|
USER | VARCHAR(32) | SQL 文を実行したユーザーの名前 |
HOST | VARCHAR(255) | SQL 文を実行したホストの名前 |
EVENT_NAME | VARCHAR(128) | SQL 文のイベント名 (例: select 、update 、delete など) |
SUM_STARTS | BIGINT | 特定のアカウント、ホスト、およびイベント名に対して開始された SQL 文の合計数 |
SUM_LATENCY_SUM | BIGINT | 特定のアカウント、ホスト、およびイベント名に対して実行された SQL 文の合計実行時間 (マイクロ秒単位) |
SUM_ROWS_READ | BIGINT | 特定のアカウント、ホスト、およびイベント名に対して読み取られた行の合計数 |
SUM_ROWS_CHANGED | BIGINT | 特定のアカウント、ホスト、およびイベント名に対して変更された行の合計数 |
SUM_BYTES_READ | BIGINT | 特定のアカウント、ホスト、およびイベント名に対して読み取られたバイトの合計数 |
SUM_BYTES_CHANGED | BIGINT | 特定のアカウント、ホスト、およびイベント名に対して変更されたバイトの合計数 |
クエリ例
以下のクエリは、USER
root
によって実行された SELECT
文に関する情報を取得します。
SELECT *
FROM performance_schema.events_statements_summary_by_account_by_event_name
WHERE USER = 'root' AND EVENT_NAME = 'SELECT';
注意事項
- このテーブルは、大量のデータを格納するため、パフォーマンスに影響を与える可能性があります。必要に応じて、
events_statements_history_long
テーブルを使用することを検討してください。 events_statements_summary_by_account_by_event_name
テーブルは、定期的に更新されます。更新間隔は、performance_schema
設定によって異なります。
この解説に加え、以下の点にも留意してください。
- Performance Schema を使用するには、適切な権限を持っている必要があります。
events_statements_summary_by_account_by_event_name
テーブル以外にも、Performance Schema には SQL 文の実行に関する情報を提供するテーブルがいくつかあります。- Performance Schema は、MariaDB 5.5 以降で使用できます。
SELECT USER, EVENT_NAME, SUM_STARTS
FROM performance_schema.events_statements_summary_by_account_by_event_name
WHERE USER = 'root' AND EVENT_NAME = 'SELECT';
特定のホストで実行されたすべての SQL 文の実行時間を合計
SELECT HOST, EVENT_NAME, SUM_LATENCY_SUM
FROM performance_schema.events_statements_summary_by_account_by_event_name
GROUP BY HOST, EVENT_NAME;
特定のアカウントで読み取られた行の合計数を取得
SELECT USER, SUM_ROWS_READ
FROM performance_schema.events_statements_summary_by_account_by_event_name
GROUP BY USER;
特定のイベント名で変更されたバイトの合計数を取得
SELECT EVENT_NAME, SUM_BYTES_CHANGED
FROM performance_schema.events_statements_summary_by_account_by_event_name
GROUP BY EVENT_NAME;
特定のユーザー、ホスト、およびイベント名に関するすべてのメトリクスを表示
SELECT *
FROM performance_schema.events_statements_summary_by_account_by_event_name
WHERE USER = 'root' AND HOST = 'localhost' AND EVENT_NAME = 'SELECT';
特定の期間における SQL 文の実行に関する情報を取得
SELECT *
FROM performance_schema.events_statements_summary_by_account_by_event_name
WHERE TIMESTAMP BETWEEN '2024-07-10 00:00:00' AND '2024-07-11 00:00:00';
DESCRIBE performance_schema.events_statements_summary_by_account_by_event_name;
events_statements_summary_by_digest
テーブルは、events_statements_summary_by_account_by_event_name
テーブルと似ていますが、アカウントやホストの情報ではなく、SQL 文のダイジェストに基づいてデータを格納します。
利点
- 特定の SQL 文のパターンを分析するのに役立ちます。
- データ量が少なく、必要な情報をより迅速に取得できる場合があります。
欠点
- アカウントやホストに関する情報が得られないため、特定のユーザーまたはホストによるアクティビティを分析するには適していない場合があります。
events_statements_history_long テーブル
events_statements_history_long
テーブルは、events_statements_summary_by_account_by_event_name
テーブルよりも詳細な情報を格納する履歴テーブルです。
利点
- 長期間にわたってデータを追跡するのに役立ちます。
- 各 SQL 文の実行に関する詳細な情報 (実行時間、読み取り/書き込み行数、使用されたバイト数など) を提供します。
欠点
events_statements_summary_by_account_by_event_name
テーブルほど頻繁に更新されない場合があります。- データ量が多いため、パフォーマンスに影響を与える可能性があります。
カスタムクエリ
必要な情報を取得するために、events_statements_current
テーブルなどの Performance Schema テーブルに対してカスタム クエリを実行することもできます。
利点
- 特定のニーズに合わせたデータを正確に取得できます。
欠点
- パフォーマンスに影響を与える可能性があります。
- クエリを自分で作成および保守する必要があります。
サードパーティ製ツール
- Percona Toolkit: オープンソースの MySQL パフォーマンス ツールキットです。
pt-query-summary
コマンドなどのツールを使用して、events_statements_summary_by_account_by_event_name
テーブルなどの Performance Schema テーブルからのデータを分析することができます。 - MySQL Enterprise Monitor: MySQL のパフォーマンスを監視および分析するための商用ツールです。
events_statements_summary_by_account_by_event_name
テーブルなどの Performance Schema テーブルからのデータを可視化し、分析することができます。
- MySQL のパフォーマンスを包括的に監視および分析したい場合は、MySQL Enterprise Monitor などのサードパーティ製ツールを使用するのが最適です。
- 特定のニーズに合わせたデータを正確に取得する必要がある場合は、カスタム クエリを使用するのが最適です。
- 長期間にわたって詳細なデータを追跡する場合は、
events_statements_history_long
テーブルが最適な選択肢です。 - 特定の SQL 文のパターンを分析する場合は、
events_statements_summary_by_digest
テーブルが最適な選択肢です。 - 特定のユーザーまたはホストによるアクティビティを分析する場合は、
events_statements_summary_by_account_by_event_name
テーブルが最適な選択肢です。