このトピックでは、PolarDBが提供するパフォーマンスエージェント機能について説明します。 パフォーマンスエージェントをPolarDB for MySQLプラグインとして使用して、PolarDB for MySQLクラスター内のノードのパフォーマンス統計を収集できます。
前提条件
- PolarDBクラスターはPolarDB for MySQL 8.0 1で、リビジョンバージョンは8.0.2.1.0以降です。 バージョンの確認方法の詳細については、「エンジンバージョンの照会」をご参照ください。
- loose_performance_schemaパラメーターはONに設定されています。 詳細については、「クラスターとノードパラメーターの設定」をご参照ください。
背景情報
パフォーマンスエージェント用に、PERF_STATISTICSという名前のメモリテーブルが追加されます。 このテーブルはperformance_schemaシステムデータベースに保存されます。 このテーブルには, 直近の期间で生成されたパフォーマンスデータが格纳されます。 このテーブルからパフォーマンスデータを照会できます。
説明
performance_schema機能を有効にして、ロック、トランザクション、およびメモリの観点からクラスターのパフォーマンスメトリックを監視できます。 ただし、performance_schema機能を有効にすると、大量のシステムメモリが占有され、クラスターのパフォーマンスが影響を受けます。 performance_schema機能は、デフォルトでPolarDB for MySQLで無効になっています。 performance_schema機能を有効にする場合は、クラスターの仕様とリソースに基づいてperformance_schemaメトリックを慎重に設定することをお勧めします。
パラメーター
次の表に、パフォーマンスエージェントに設定する必要があるパラメーターを示します。
パラメーター | 説明 |
performance_agent_enabled | パフォーマンスエージェント機能を有効にするかどうかを指定します。 有効な値: ONとOFF。 デフォルト値: ON。 |
performance_agent_interval | PolarDBがパフォーマンスデータを収集する間隔を指定します。 有効な値: 1 ~ 60。 単位は秒です。 デフォルト値は 1 です。 |
performance_agent_perfstat_volume_size | PERF_STATISTICSメモリテーブルで許可されるデータレコードの最大数を指定します。 デフォルト値は 3600 です。 performance_agent_intervalパラメーターを1に設定した場合、システムは過去1時間以内に生成されたパフォーマンスデータを保持します。 |
Schema
PERF_STATISTICSメモリテーブルは、次のスキーマを使用します。
一時的なテーブル 'PERF_STATISTS 'を作成します (
'TIME' datetime NOT NULL DEFAULT '0000-00-00 00:00:00 '、
'PROCS_MEM_USAGE 'ダブルNOT NULL DEFAULT '0' 、
'PROCS_CPU_RATIO 'ダブルNOT NULLデフォルト '0' 、
'PROCS_IOPS' ダブルNOT NULL DEFAULT '0' 、
'PROCS_IO_READ_BYTES 'bigint(21) NOT NULL DEFAULT '0' 、
'PROCS_IO_WRITE_BYTES 'bigint(21) NOT NULL DEFAULT '0' 、
'MYSQL_CONN_ABORT 'int(11) NOT NULL DEAULT '0' 、
'MYSQL_CONN_CREATED 'int(11) NOT NULL DEAULT '0' 、
'MYSQL_USER_CONN_COUNT 'int(11) NOT NULL DEFAULT '0' 、
'MYSQL_CONN_RUNNING 'int(11) NOT NULL DEAULT '0' 、
'MYSQL_LOCK_IMMEDIATE 'int(11) NOT NULL DEAULT '0' 、
'MYSQL_LOCK_WAITED 'int(11) NOT NULL DEAULT '0' 、
'MYSQL_COM_INSERT 'int(11) NOT NULL DEFAULT '0' 、
'MYSQL_COM_UPDATE 'int(11) NOT NULL DEFAULT '0' 、
'MYSQL_COM_DELETE 'int(11) NOT NULL DEFAULT '0' 、
'MYSQL_COM_SELECT 'int(11) NOT NULL DEFAULT '0' 、
'MYSQL_COM_COMMIT 'int(11) NOT NULL DEFAULT '0' 、
'MYSQL_COM_ROLLBACK 'int(11) NOT NULL DEAULT '0' 、
'MYSQL_COM_PREPARE 'int(11) NOT NULL DEFAULT '0' 、
'MYSQL_LONG_QUERY 'int(11) NOT NULL DEAULT '0' 、
'MYSQL_TCACHE_GET 'bigint (21) NOT NULL DEAULT '0' 、
'MYSQL_TCACHE_MISS 'bigint(21) NOT NULL DEFAULT '0' 、
'MYSQL_TMPFILE_CREATED 'int(11) NOT NULL DEFAULT '0' 、
'MYSQL_TMP_TABLES 'int(11) NOT NULL DEAULT '0' 、
'MYSQL_TMP_DISKTABLES 'int(11) NOT NULL DEFAULT '0' 、
'MYSQL_SORT_MERGE 'int(11) NOT NULL DEAULT '0' 、
'MYSQL_SORT_ROWS 'int(11) NOT NULL DEFAULT '0' 、
'MYSQL_BYTES_RECEIVED 'bigint(21) NOT NULL DEFAULT '0' 、
'MYSQL_BYTES_SENT 'bigint(21) NOT NULL DEAULT '0' 、
'MYSQL_BINLOG_OFFSET 'int(11) NOT NULL DEAULT '0' 、
'MYSQL_IOLOG_OFFSET 'int(11) NOT NULL DEAULT '0' 、
'MYSQL_RELAYLOG_OFFSET 'int(11) NOT NULL DEFAULT '0' 、
'EXTRA' json NOT NULL DEFAULT 'null'
) エンジン=InnoDBデフォルト料金=utf8;
列 | 説明 |
時間 | データレコードが生成された時刻。 時刻はyyyy-MM-dd HH:mm:ss形式です。 |
PROCS_MEM_USAGE | クラスターが占有する物理メモリのサイズ。 単位:バイト |
PROCS_CPU_RATIO | CPU使用率。 |
PROCS_IOPS | 実行されるI/O操作の数。 |
PROCS_IO_READ_BYTES | I/O操作によって読み取られるデータの量。 単位:バイト |
PROCS_IO_WRITE_BYTES | I/O操作によって書き込まれるデータの量。 単位:バイト |
MYSQL_CONN_ABORT | 閉じた接続の数。 |
MYSQL_CONN_CREATED | 新しい接続の数。 |
MYSQL_USER_CONN_COUNT | 接続の総数。 |
MYSQL_CONN_RUNNING | アクティブな接続の数。 |
MYSQL_LOCK_IMMEDIATE | 保持されているロックの数。 |
MYSQL_LOCK_WAITED | ロック待機イベントの数。 |
MYSQL_COM_INSERT | データを挿入するために実行されるステートメントの数。 |
MYSQL_COM_UPDATE | データを更新するために実行されるステートメントの数。 |
MYSQL_COM_DELETE | データを削除するために実行されるステートメントの数。 |
MYSQL_COM_SELECT | データを照会するために実行されるステートメントの数。 |
MYSQL_COM_COMMIT | 明示的にコミットされたトランザクションの数。 |
MYSQL_COM_ROLLBACK | ロールバックされたトランザクションの数。 |
MYSQL_COM_PREPARE | 前処理されたステートメントの数。 |
MYSQL_LONG_QUERY | 低速クエリの数。 |
MYSQL_TCACHE_GET | キャッシュヒット数。 |
MYSQL_TCACHE_MISS | キャッシュミスの数。 |
MYSQL_TMPFILE_CREATED | 作成される一時ファイルの数。 |
MYSQL_TMP_TABLES | 作成される一時テーブルの数。 |
MYSQL_TMP_DISKTABLES | 作成される一時ディスクテーブルの数。 |
MYSQL_SORT_MERGE | データがマージおよびソートされた回数。 |
MYSQL_SORT_ROWS | ソートされる行の数。 |
MYSQL_BYTES_RECEIVED | 受信されたデータの量。 単位:バイト |
MYSQL_BYTES_SENT | 送信されるデータの量。 単位:バイト |
MYSQL_BINLOG_OFFSET | 生成されるバイナリログファイルのサイズ。 単位:バイト |
MYSQL_IOLOG_OFFSET | プライマリノードによって送信されるバイナリログファイルのサイズ。 単位:バイト |
MYSQL_RELAYLOG_OFFSET | 読み取り専用ノードによって適用されるバイナリログファイルのサイズ。 単位:バイト |
追加 | InnoDBに関する統計。 EXTRAパラメーターの値は複数のフィールドで構成され、JSON形式です。 詳細については、このトピックの「EXTRAパラメーターの値のフィールド」を参照してください。 説明 InnoDB統計のメトリックの値は、 SHOW STATUS ステートメントを実行して取得した値と同じです。 |
フィールド | 説明 |
INNODB_TRX_CNT | トランザクションの数。 |
INNODB_DATA_READ | 読み取られるデータの量。 単位:バイト |
INNODB_IBUF_SIZE | マージされるページの数。 |
INNODB_LOG_WAITS | InnoDBがログデータの書き込みを待機する回数。 |
INNODB_MAX_PURGE | 削除されたトランザクションの数。 |
INNODB_N_WAITING | InnoDBが待機するロックの数。 |
INNODB_ROWS_READ | 読み取られる行の数。 |
INNODB_LOG_WRITES | InnoDBによってログデータが書き込まれた回数。 |
INNODB_IBUF_MERGES | InnoDBによってデータがマージされた回数。 |
INNODB_DATA_WRITTEN | 書き込まれるデータの量。 単位:バイト |
INNODB_DBRWR_WRITES | ダブル書き込み操作の数。 |
INNODB_IBUF_SEGSIZE | バッファに挿入されるデータのサイズ。 |
INNODB_ROWS_DELETED | 削除される行の数。 |
INNODB_ROWS_UPDATED | 更新される行の数。 |
INNODB_COMMIT_TRXCNT | コミットされたトランザクションの数。 |
INNODB_IBUF_FREELIST | アイドルリストの長さ。 |
INNODB_MYSQL_TRX_CNT | MySQLトランザクションの数。 |
INNODB_ROWS_INSERTED | 挿入される行の数。 |
INNODB_ACTIVE_TRX_CNT | アクティブなトランザクションの数。 |
INNODB_OS_LOG_WRITTEN | 書き込まれるログデータの量。 単位:バイト |
INNODB_ACTIVE_VIEW_CNT | アクティブなビューの数。 |
INNODB_RSEG_HISTORY_LEN | TRX_RSEG_HISTORYテーブルの長さ。 |
INNODB_AVG_COMMIT_TRXTIME | トランザクションのコミットにかかる平均時間。 |
INNODB_MAX_COMMIT_TRXTIME | トランザクションのコミットにかかる最大時間。 |
INNODB_DBRWR_PAGES_WRITTEN | 二重書き込み操作によって完了した書き込みの数。 |
Usage
- 次の文を実行して, システム表を照会し, パフォーマンスデータを取得できます。
- 過去30秒間のCPU使用率とメモリ使用率を照会します。 例:
performance_schema.PERF_STATISTICSからTIME、PROCS_MEM_USAGE、PROCS_CPU_RATIOを選択します。+ --------------------- + ----------------- + ----------------- + | タイム | PROCS_MEM_USAGE | PROCS_CPU_RATIO | + --------------------- + ----------------- + ----------------- + | 2020-02-27 11:15:36 | 857812992 | 18.55 | | 2020-02-27 11:15:35 | 857808896 | 18.54 | | 2020-02-27 11:15:34 | 857268224 | 19.64 | | 2020-02-27 11:15:33 | 857268224 | 21.06 | | 2020-02-27 11:15:32 | 857264128 | 20.39 | | 2020-02-27 11:15:31 | 857272320 | 20.32 | | 2020-02-27 11:15:30 | 857272320 | 21.35 | | 2020-02-27 11:15:29 | 857272320 | 28.8 | | 2020-02-27 11:15:28 | 857268224 | 29.08 | | 2020-02-27 11:15:27 | 857268224 | 26.92 | | 2020-02-27 11:15:26 | 857268224 | 23.84 | | 2020-02-27 11:15:25 | 857264128 | 13.76 | | 2020-02-27 11:15:24 | 857264128 | 15.12 | | 2020-02-27 11:15:23 | 857264128 | 14.76 | | 2020-02-27 11:15:22 | 857264128 | 15.38 | | 2020-02-27 11:15:21 | 857260032 | 13.23 | | 2020-02-27 11:15:20 | 857260032 | 12.75 | | 2020-02-27 11:15:19 | 857260032 | 12.17 | | 2020-02-27 11:15:18 | 857255936 | 13.22 | | 2020-02-27 11:15:17 | 857255936 | 20.51 | | 2020-02-27 11:15:16 | 857255936 | 28.74 | | 2020-02-27 11:15:15 | 857251840 | 29.85 | | 2020-02-27 11:15:14 | 857251840 | 29.31 | | 2020-02-27 11:15:13 | 856981504 | 28.85 | | 2020-02-27 11:15:12 | 856981504 | 29.19 | | 2020-02-27 11:15:11 | 856977408 | 29.12 | | 2020-02-27 11:15:10 | 856977408 | 29.32 | | 2020-02-27 11:15:09 | 856977408 | 29.2 | | 2020-02-27 11:15:08 | 856973312 | 29.36 | | 2020-02-27 11:15:07 | 856973312 | 28.79 | + --------------------- + ----------------- + ----------------- + セットの30行 (0.08秒)
- 過去30秒間にInnoDBによって読み書きされた行を照会します。 例:
performance_schema.PERF_STATIICSからMySQL> select TIME, EXTRA-> $.INNODB_ROWS_READ ', EXTRA-> $.INNODB_ROWS_INSERTED' + --------------------- + ----------------------------- + --------------------------------- + | TIME | EXTRA->'$.INNODB_ROWS_READ' | EXTRA->'$.INNODB_ROWS_INSERTED' | + --------------------- + ----------------------------- + --------------------------------- + | 2020-02-27 11:22:17 | 39209 | 0 | | 2020-02-27 11:22:16 | 36098 | 0 | | 2020-02-27 11:22:15 | 38035 | 0 | | 2020-02-27 11:22:14 | 37384 | 0 | | 2020-02-27 11:22:13 | 38336 | 0 | | 2020-02-27 11:22:12 | 33946 | 0 | | 2020-02-27 11:22:11 | 36301 | 0 | | 2020-02-27 11:22:10 | 36835 | 0 | | 2020-02-27 11:22:09 | 36900 | 0 | | 2020-02-27 11:22:08 | 36402 | 0 | | 2020-02-27 11:22:07 | 39672 | 0 | | 2020-02-27 11:22:06 | 39316 | 0 | | 2020-02-27 11:22:05 | 37830 | 0 | | 2020-02-27 11:22:04 | 36396 | 0 | | 2020-02-27 11:22:03 | 34820 | 0 | | 2020-02-27 11:22:02 | 37350 | 0 | | 2020-02-27 11:22:01 | 39463 | 0 | | 2020-02-27 11:22:00 | 38419 | 0 | | 2020-02-27 11:21:59 | 37673 | 0 | | 2020-02-27 11:21:58 | 35117 | 0 | | 2020-02-27 11:21:57 | 36140 | 0 | | 2020-02-27 11:21:56 | 37592 | 0 | | 2020-02-27 11:21:55 | 39765 | 0 | | 2020-02-27 11:21:54 | 35553 | 0 | | 2020-02-27 11:21:53 | 35882 | 0 | | 2020-02-27 11:21:52 | 37061 | 0 | | 2020-02-27 11:21:51 | 40699 | 0 | | 2020-02-27 11:21:50 | 39608 | 0 | | 2020-02-27 11:21:49 | 39317 | 0 | | 2020-02-27 11:21:48 | 37413 | 0 | + --------------------- + ----------------------------- + --------------------------------- + セットの30行 (0.08秒)
- 過去30秒間のCPU使用率とメモリ使用率を照会します。 例:
- 監視プラットフォームに接続して、データベースのパフォーマンスをリアルタイムで監視します。 たとえば、Grafanaに接続します。