可以通过查询一组性能视图来监控 KingbaseES 数据库实例的运行状态。
在使用性能视图的数据时,你必须了解这些信息并非是实时更新的。每个独立的服务器进程只在进入闲置状态之前才向统计收集器传送新的统计计数;因此正在进行的查询或事务并不影响显示出来的总数。同样,收集器本身也最多每 500 毫秒发送一次新的报告。因此显示的信息总是落后于实际活动。但是由 track_activities 收集的当前查询信息总是最新的。
当一个服务器进程被要求显示任何这些统计信息时,它首先取得收集器进程最近发出的报告并且接着为所有统计视图和函数使用这个快照,直到它的当前事务的结尾。因此只要你继续当前事务,统计数据将会一直显示静态信息。相似地,当任何关于所有会话的当前查询的信息在一个事务中第一次被请求时,这样的信息将被收集。并且在整个事务期间将显示相同的信息。这是一种特性而非缺陷,因为它允许你在该统计信息上执行多个查询并且关联结果而不用担心那些数字会在你不知情的情况下改变。但是如果你希望用每个查询都看到新结果,要确保在任何事务块之外做那些查询。或者,你可以调用 sys_stat_clear_snapshot(),那将丢弃当前事务的统计快照(如果有)。下一次对统计性信息的使用将导致获取一个新的快照。
一个事务也可以在视图 sys_stat_xact_all_tables、sys_stat_xact_sys_tables、sys_stat_xact_user_tables 和 sys_stat_xact_user_functions 中看到它自己的统计信息(还没有被传送给收集器)。这些数字并不像上面所述的那样行动,相反它们在事务期间持续被更新。
关于每个性能视图的描述,可以参考《KingbaseES 数据库参考手册》2.动态性能视图 。
实时刷新的性能视图:
非实时刷新的性能视图:
比如,通过 sys_stat_bgwriter 视图参考后台写和检查点的统计信息:
test=# select * from sys_stat_bgwriter;-[RECORD 1 ]
---------+------------------------------
checkpoints_timed| 344
checkpoints_req| 0
checkpoint_write_time| 3749
checkpoint_sync_time| 1
buffers_checkpoint| 37
buffers_clean| 0
maxwritten_clean| 0
buffers_backend| 0
buffers_backend_fsync| 0
buffers_alloc| 82
stats_reset| 2022-05-30 09:35:50.464433+08
通过 sys_stat_database 查看每个库的事务和元组统计信息:
test=# select * from sys_stat_database;-[RECORD 1 ]
---------+------------------------------
datid| 16384
datname| test
numbackends| 1
xact_commit| 44930
xact_rollback| 15
blks_read| 59142
blks_hit| 11122493
tup_returned| 160318834
tup_fetched| 1491817
tup_inserted| 1380883
tup_updated| 7324
tup_deleted| 35999
conflicts| 0
temp_files| 288
temp_bytes| 2359296
deadlocks| 0
checksum_failures|
checksum_last_failure|
blk_read_time| 8225.142
blk_write_time| 6.066
stats_reset| 2022-05-16 18:06:12.851563+08