1.简介
与 Mysql 的 Performance_schema 类似,openGauss 本身也提供类似的性能监控视图。但与 Mysql 也存在差异,本文就针对两者异同做个比较。
Mysql 的性能监控视图保存在 performance_schema schema 下,openGauss 主要保存在 dbe_perf schema 下。本人主要比较 statement,wait event 和 io 相关视图。
2.语句相关视图
Mysql 通过 performance_schema.events_statements_current 显示当前运行或者刚刚完成的语句,可以显示成功或者失败的语句。与此功能对应的 openGauss 视图是 pg_catalog.pg_stat_activity。但两者的统计信息还是有很多差异的,比如 Mysql 会记录语句执行报错信息,但 openGauss 当前版本(3.0.1)系统表并不显示该信息。
下面看一下两个系统显示信息的差别:
mysql> select * from performance_schema.events_statements_current\G
*************************** 1. row ***************************
THREAD_ID: 67
EVENT_ID: 3
END_EVENT_ID: NULL
EVENT_NAME: statement/sql/select
SOURCE: init_net_server_extension.cc:95
TIMER_START: 1832456036100746000
TIMER_END: 1832456036738383000
TIMER_WAIT: 637637000
LOCK_TIME: 3000000
SQL_TEXT: select * from performance_schema.events_statements_current
DIGEST: 91caf112a1e8c015485be7c90b3abc04f3aa12909461daf3d3c002cc88ed6f0f
DIGEST_TEXT: SELECT * FROM `performance_schema` . `events_statements_current`
CURRENT_SCHEMA: NULL
OBJECT_TYPE: NULL
OBJECT_SCHEMA: NULL
OBJECT_NAME: NULL
OBJECT_INSTANCE_BEGIN: NULL
MYSQL_ERRNO: 0
RETURNED_SQLSTATE: NULL
MESSAGE_TEXT: NULL
ERRORS: 0
WARNINGS: 0
ROWS_AFFECTED: 0
ROWS_SENT: 0
ROWS_EXAMINED: 0
CREATED_TMP_DISK_TABLES: 0
CREATED_TMP_TABLES: 0
SELECT_FULL_JOIN: 0
SELECT_FULL_RANGE_JOIN: 0
SELECT_RANGE: 0
SELECT_RANGE_CHECK: 0
SELECT_SCAN: 1
SORT_MERGE_PASSES: 0
SORT_RANGE: 0
SORT_ROWS: 0
SORT_SCAN: 0
NO_INDEX_USED: 1
NO_GOOD_INDEX_USED: 0
NESTING_EVENT_ID: NULL
NESTING_EVENT_TYPE: NULL
NESTING_EVENT_LEVEL: 0
STATEMENT_ID: 1090
CPU_TIME: 0
MAX_CONTROLLED_MEMORY: 0
MAX_TOTAL_MEMORY: 0
EXECUTION_ENGINE: PRIMARY
1 row in set (0.00 sec)
openGauss=# select *from pg_stat_activity;
-[ RECORD 1 ]----+------------------------------------------------------------