Performance Agent是PolarDB提供的一種更加便捷的效能資料統計方案。通過PolarDB MySQL版外掛程式的方式,實現PolarDB MySQL版叢集中的節點內部各項效能資料的採集與統計。
前提條件
- PolarDB叢集版本需為PolarDB MySQL版8.0版本且Revision version為8.0.2.1.0或以上,您可以參見查詢版本號碼確認叢集版本。
- loose_performance_schema參數已設定為ON。具體操作請參見設定叢集參數和節點參數。
背景資訊
Performance Agent在performance_schema系統庫下新增了一張記憶體表PERF_STATISTICS,用於統計最近一段時間的效能資料,您可以直接查詢該表擷取相關指標的效能資料。
說明
您也可以通過開啟performance_schema功能來細粒度監控叢集在鎖、事務、記憶體等各方面的效能指標。但是,由於開啟performance_schema會佔用大量的系統記憶體並在一定程度上影響叢集的效能,故在PolarDB MySQL版中該功能預設關閉。如需開啟performance_schema,建議您根據叢集的規格資源謹慎配置performance_schema的各項指標。
參數說明
Performance Agent功能相關參數說明如下:
參數 | 說明 |
performance_agent_enabled | 是否開啟Performance Agent功能。取值為ON或OFF。預設值為ON。 |
performance_agent_interval | 效能資料採集間隔。單位為秒,取值範圍為1~60,預設值為1。 |
performance_agent_perfstat_volume_size | PERF_STATISTICS表的最巨量資料條數。預設值為3600(即當採樣間隔為1秒時,儲存最近1小時的效能資料)。 |
表結構說明
PERF_STATISTICS記憶體表的結構如下:
CREATE TEMPORARY TABLE `PERF_STATISTICS` (
`TIME` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`PROCS_MEM_USAGE` double NOT NULL DEFAULT '0',
`PROCS_CPU_RATIO` double NOT NULL DEFAULT '0',
`PROCS_IOPS` double 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 DEFAULT '0',
`MYSQL_CONN_CREATED` int(11) NOT NULL DEFAULT '0',
`MYSQL_USER_CONN_COUNT` int(11) NOT NULL DEFAULT '0',
`MYSQL_CONN_RUNNING` int(11) NOT NULL DEFAULT '0',
`MYSQL_LOCK_IMMEDIATE` int(11) NOT NULL DEFAULT '0',
`MYSQL_LOCK_WAITED` int(11) NOT NULL DEFAULT '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 DEFAULT '0',
`MYSQL_COM_PREPARE` int(11) NOT NULL DEFAULT '0',
`MYSQL_LONG_QUERY` int(11) NOT NULL DEFAULT '0',
`MYSQL_TCACHE_GET` bigint(21) NOT NULL DEFAULT '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 DEFAULT '0',
`MYSQL_TMP_DISKTABLES` int(11) NOT NULL DEFAULT '0',
`MYSQL_SORT_MERGE` int(11) NOT NULL DEFAULT '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 DEFAULT '0',
`MYSQL_BINLOG_OFFSET` int(11) NOT NULL DEFAULT '0',
`MYSQL_IOLOG_OFFSET` int(11) NOT NULL DEFAULT '0',
`MYSQL_RELAYLOG_OFFSET` int(11) NOT NULL DEFAULT '0',
`EXTRA` json NOT NULL DEFAULT 'null'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
列名 | 說明 |
TIME | 時間(UTC),格式為yyyy-MM-dd HH:mm:ss。 |
PROCS_MEM_USAGE | 實體記憶體使用量,單位為Byte。 |
PROCS_CPU_RATIO | CPU使用率。 |
PROCS_IOPS | 系統IO調用次數。 |
PROCS_IO_READ_BYTES | IO讀取資料量,單位為Byte。 |
PROCS_IO_WRITE_BYTES | IO寫入資料量,單位為Byte。 |
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 | 接收資料量,單位為Byte。 |
MYSQL_BYTES_SENT | 發送資料量,單位為Byte。 |
MYSQL_BINLOG_OFFSET | 產生的Binlog檔案大小,單位為Byte。 |
MYSQL_IOLOG_OFFSET | 主庫發送的Binlog檔案大小,單位為Byte。 |
MYSQL_RELAYLOG_OFFSET | 從庫應用的Binlog檔案大小,單位為Byte。 |
EXTRA | InnoDB統計資訊。EXTRA包含多個欄位,為JSON格式。詳細欄位介紹請參見下方EXTRA欄位說明。 說明 InnoDB統計資訊的指標項與 SHOW STATUS 命令顯示的值相同。 |
欄位 | 說明 |
INNODB_TRX_CNT | 事務數。 |
INNODB_DATA_READ | 讀取資料量,單位為Byte。 |
INNODB_IBUF_SIZE | 合并記錄頁數。 |
INNODB_LOG_WAITS | Log寫入等待次數。 |
INNODB_MAX_PURGE | 清除事務數。 |
INNODB_N_WAITING | 鎖等待數。 |
INNODB_ROWS_READ | 讀取資料行數。 |
INNODB_LOG_WRITES | 日誌寫次數。 |
INNODB_IBUF_MERGES | 合并次數。 |
INNODB_DATA_WRITTEN | 寫入資料量,單位為Byte。 |
INNODB_DBLWR_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 | 記錄檔寫入量,單位為Byte。 |
INNODB_ACTIVE_VIEW_CNT | 活躍視圖數。 |
INNODB_RSEG_HISTORY_LEN | TRX_RSEG_HISTORY表長度。 |
INNODB_AVG_COMMIT_TRXTIME | 平均事務提交時間。 |
INNODB_MAX_COMMIT_TRXTIME | 最長事務提交時間。 |
INNODB_DBLWR_PAGES_WRITTEN | 雙寫操作完成寫入次數。 |
使用方法
- 您可以參見如下樣本直接查詢系統資料表,擷取效能資料。
- 查詢最近30秒的CPU和記憶體使用量情況,樣本如下:
MySQL> select TIME, PROCS_MEM_USAGE, PROCS_CPU_RATIO from performance_schema.PERF_STATISTICS order by time DESC limit 30; +---------------------+-----------------+-----------------+ | TIME | 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 rows in set (0.08 sec)
- 查詢最近30秒的InnoDB讀寫的資料行數,樣本如下:
MySQL> select TIME, EXTRA->'$.INNODB_ROWS_READ', EXTRA->'$.INNODB_ROWS_INSERTED' from performance_schema.PERF_STATISTICS order by time DESC limit 30; +---------------------+-----------------------------+---------------------------------+ | 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 rows in set (0.08 sec)
- 查詢最近30秒的CPU和記憶體使用量情況,樣本如下:
- 對接效能監控平台(如使用Grafana視覺化檢視),實現即時監控。