文档首页 > > 开发指南> 资源负载管理> 资源监控> 历史TopSQL

历史TopSQL

分享
更新时间: 2019/11/12 GMT+08:00

当作业运行结束时,能够对历史的作业进行信息追溯,展现过去态作业的资源使用情况(包括内存、下盘、CPU时间、IO等)和运行状态信息(包括报错、终止、异常等)以及性能告警信息。系统提供了query级别和算子级别的资源监控历史视图用于查询执行代价大于resource_track_cost的历史TopSQL。

默认开启query级别的资源监控功能,如果要开启query级别和算子级别资源监控功能,需将resource_track_level设置为operator。支持历史资源监控的作业类型为:

  • 优化器估算的执行代价大于等于resource_track_cost的作业。使用explain语句可以查询语句的执行代价。
  • 资源监控实时视图中记录的作业结束时的执行时间大于或等于resource_track_duration的作业。

资源监控历史视图如下表所示,您可以像查询数据库表一样查询这些视图,普通用户仅支持查询以gs为前缀的视图:

表1 资源监控历史视图

监控级别

节点范围

查询视图

视图功能

Query级别

当前CN

GS_WLM_SESSION_HISTORY

查询执行结束作业的负载记录。

所有CN

PGXC_WLM_SESSION_HISTORY

查询执行结束作业的负载记录。

算子级别

当前CN

GS_WLM_OPERATOR_HISTORY

查询执行结束的作业算子的资源信息。

所有CN

PGXC_WLM_OPERATOR_HISTORY

查询执行结束的作业算子的资源信息。

当GUC参数enable_resource_record设置为on(默认为off)时,开启资源监控记录归档功能。存储在history视图(如表1)中的资源监控信息,每隔3分钟会被归档到相应的info视图(如表2)中,归档后history视图中的记录会被清除。info视图只支持在连接postgres数据库时查询。

表2 资源监控历史信息的归档视图

监控级别

节点范围

查询视图

视图功能

Query级别

当前CN

GS_WLM_SESSION_INFO

查询执行结束作业的负载记录。

所有CN

PGXC_WLM_SESSION_INFO

查询执行结束作业的负载记录。

算子级别

当前CN

GS_WLM_OPERATOR_INFO

查询执行结束的作业算子的资源信息。

所有CN

PGXC_WLM_OPERATOR_INFO

查询执行结束的作业算子的资源信息。

enable_resource_record开关打开后,会引起存储空间膨胀及轻微性能影响,不用时请关闭。

典型的历史TopSQL查询

此处以查询在当前CN上三分钟以内执行结束的SQL语句为例。如果需要查询所有CN上执行的SQL语句,请将查询语句中视图名称的前缀gs替换为pgxc。如果需要查询三分钟及以上执行结束的SQL语句,请将查询语句中视图名称的后缀history替换为info。

  • Query级别查询。此处提供的每条查询语句,默认第一列为query(即当前查询的SQL语句)。
    • 查询SQL语句执行的开始时间,结束时间,实际执行时间,执行状态信息。时间单位为:ms。
      SELECT query,start_time,finish_time,duration,status FROM gs_wlm_session_history ORDER BY start_time DESC;
    • 查询SQL语句在所有DN上的最大内存峰值,语句执行过程中的内存使用平均值,语句在各DN间的内存使用倾斜率。内存单位为:MB。
      SELECT query,max_peak_memory,average_peak_memory,memory_skew_percent FROM gs_wlm_session_history ORDER BY start_time DESC;
    • 查询SQL语句在所有DN上的下盘信息,所有DN上下盘的最大数据量,所有DN上下盘的平均数据量,DN间下盘倾斜率。数据量单位为:MB。
      SELECT query,spill_info,max_spill_size,average_spill_size,spill_skew_percent FROM gs_wlm_session_history ORDER BY start_time DESC;
    • 查询SQL语句在所有DN上的最大执行时间,平均执行时间,在各DN上的执行时间倾斜率。时间单位为:ms。
      SELECT query,max_dn_time,average_dn_time,dntime_skew_percent FROM gs_wlm_session_history ORDER BY start_time DESC;
    • 查询SQL语句在所有DN上的最大CPU时间,在所有DN上的CPU总时间,在DN间的CPU时间倾斜率。时间单位:ms。
      SELECT query,max_cpu_time,total_cpu_time,cpu_skew_percent FROM gs_wlm_session_history ORDER BY start_time DESC;
    • 查询SQL语句在所有DN上的每秒最大IO峰值,在所有DN上的每秒平均IO峰值,在DN间的IO倾斜率。IO单位:列存单位是次/s,行存单位是万次/s。
      SELECT query,max_peak_iops,average_peak_iops,iops_skew_percent FROM gs_wlm_session_history ORDER BY start_time DESC;
  • 算子级别查询。提供的每条查询语句,默认第一列为plan_node_name(即对应于plan_node_id的算子的名称)。
    • 当前算子处理第一条数据的开始时间,到结束时候的总执行时间,以及执行状态。时间单位为:ms。
      SELECT plan_node_name,start_time,duration FROM gs_wlm_operator_history ORDER BY start_time DESC;
    • 当前算子在所有DN上的最大内存峰值,在所有DN上的平均内存峰值,在各DN内存使用倾斜率。内存单位为:MB。
      SELECT plan_node_name,max_peak_memory,average_peak_memory,memory_skew_percent FROM gs_wlm_operator_history ORDER BY start_time DESC;
    • 当前算子在所有DN上下盘最大数据量,所有DN上下盘平均数据量,DN间下盘倾斜率。数据量单位为:MB
      SELECT plan_node_name,max_spill_size,average_spill_size,spill_skew_percent FROM gs_wlm_operator_history ORDER BY start_time DESC;
    • 该算子在所有DN上的最大执行时间,在所有DN上的总执行时间,各DN间执行时间的倾斜率。时间单位为:ms。
      SELECT plan_node_name,max_cpu_time,total_cpu_time,cpu_skew_percent FROM gs_wlm_operator_history ORDER BY start_time DESC;

注意事项

  • 对于由于FATAL、PANIC错误导致查询异常结束时,状态信息列只显示aborted,无法记录详细异常信息。
  • 对于查询解析,优化阶段的状态信息则无法监控。
  • 资源监控历史视图通过不同的前缀(gs与pgxc)来区分单CN查询视图以及集群级别查询视图。普通用户仅支持查询以gs为前缀的视图。
  • 对于资源监控历史视图信息,由于预设内存的限制,内存中能够保留的数据记录数量是有限的。实时的查询在结束后会导入到历史相关的视图中,历史的视图信息当其在内存hash表中记录的时间超过3分钟时进行自动清理。关于记录上限,对于query级别视图,当新的需要记录的查询超过内存约束记录数上限时,则当前查询无法记录,下条查询重新进行规则判断;在每个CN上,记query级别实时查询视图在内存中可记录的最大数为max_session_realt_num(当前系统值为15240),历史视图在内存中可记录的最大数为max_session_hist_num(当前系统值为18995);业务系统单条查询的平均执行时间为run_time(s)以上,则在每个CN上,实时视图允许客户执行作业的最大并发数:num_realt_active = max_session_realt_num;历史视图允许客户执行作业的最大并发数:num_hist_active = max_session_hist_num/(180/run_time)。
  • 对于算子级别视图,当需要记录的查询的plan_node数量加上当前内存中已有的记录数量超过内存约束记录数上限时,则当前查询的所有算子节点不记录,下条查询重新按照算子规则判定。在每个CN上,记算子级别视图在内存中可记录的最大实时和历史记录数分别为max_oper_realt_num(当前系统值为93622), max_oper_hist_num(187245);记当前用户业务系统的平均每个查询的节点数为num_plan_node, 则在每个CN上,实时视图允许客户执行作业的最大并发数: num_realt_active = max_oper_realt_num/num_plan_node;历史视图允许客户执行作业的最大并发数:num_hist_active = max_oper_hist_num/(180/run_time)/num_plan_node。
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区