GaussDB(DWS)如何查看作业运行信息

举报
幕后小黑爪 发表于 2023/06/13 11:07:38 2023/06/13
【摘要】 用户反馈,出现连接数告警,作业并发数高,超过资源池限制,与实际配置不符。经过了解,用户使用pgxc_stat_activity视图进行作业并发数判断。该视图显示用户查询相关信息,是以连接线程为基础来进行统计的,因而使用此视图进行查询会存在几个问题:实际现网环境中,用户使用的是第三方工具连接的数据库,这些工具为了提高运行效率,会先建立连接,在下发作业,作业执行完成后返回,再下发作业运行,直到作...

用户反馈,出现连接数告警,作业并发数高,超过资源池限制,与实际配置不符。经过了解,用户使用pgxc_stat_activity视图进行作业并发数判断。

该视图显示用户查询相关信息,是以连接线程为基础来进行统计的,因而使用此视图进行查询会存在几个问题:

  • 实际现网环境中,用户使用的是第三方工具连接的数据库,这些工具为了提高运行效率,会先建立连接,在下发作业,作业执行完成后返回,再下发作业运行,直到作业全部执行完成,才会断开连接,这样就导致pgxc_stat_activity会残留上次作业运行的信息,记录不准。
  • 该视图中包含大量内部线程信息,如内部连接(CN-CN),这种连接已经在主CN管控过,所以理论上不需要管控。但是pgxc_stat_activity会进行记录,导致显示的活跃会话数增多,造成从pgxc_stat_activity视图中的并发数超限的现象。

为此,我们提供以作业基本单位的作业统计视图pgxc_session_wlmstat。便于用户观察运行作业和排队作业信息,以下给出推荐的查询语句。

注:该视图在GaussDB(DWS)8.1.3以上版本生效,且用户需要关闭guc参数enable_gtm_free,如果该参数开启,会存在统计不准确情况。

     参数字段说明

pgxc_session_wlmstat中字段说明:

1、语句当前的状态status,包括:

  • pending:执行前状态。
  • running:执行进行状态。、
  • finished:执行正常结束。(当enqueue字段为 StoredProcTransaction时,仅代表语句中的部 分作业已经执行完毕,该状态会持续到该语句完全执行完毕。)
  • aborted:执行异常终止。
  • active: 非以上四种状态外的正常状态。
  • unknown: 未知状态。

2、语句的属性attribute

  • Ordinary:语句发送到数据库后被解析前的默认 属性。
  • Simple:简单语句。
  • Complicated:复杂语句。
  • Internal:数据库内部语句。

1 分CN查询结果:

1.1 分CN查询用户的作业运行与排队统计

select nodename,usename, enqueue,status,count(1) as query_count,sum(statement_mem) as estimate_mem from pgxc_session_wlmstat where status in ('pending','running') and attribute!='Internal' and usename!='Ruby' and usename <> 'omm' group by 1,2,3,4 limit 100;

查询结果如下:

1.2 分CN查询用户作业运行与排队详细信息

如果需要其他信息也可从pgxc_session_wlmstat和pgxc_stat_activity中进行获取

select s.nodename, s.resource_pool,s.usename, a.query_start, s.enqueue,s.status, substr(s.query,1,30) as query, statement_mem as estimate_mem,a.query_id from pgxc_session_wlmstat s, pgxc_stat_activity a where s.threadid=a.pid and status in ('pending','running') and s.attribute!='Internal' and s.usename!='Ruby' and s.usename <> 'omm' order by 1,2,3,5,6 limit 100;

查询结果如下:

1.3 分CN查询资源池内作业运行与排队统计信息

select resource_pool,nodename, enqueue,status,count(1) as query_count,sum(statement_mem) as estimate_mem from pgxc_session_wlmstat where status in ('pending','running') and attribute!='Internal' and usename!='Ruby' and usename <> 'omm' group by 1,2,3,4 limit 100;

查询结果如下:

2 集群整体查询

2.1 整个集群用户作业运行和排队统计

select usename, enqueue,status,count(1) from pgxc_session_wlmstat where status in ('pending','running') and attribute!='Internal' and usename!='Ruby' and usename <> 'omm' group by 1,2,3 limit 100;

查询结果如下:

2.2 整个集群查询用户作业运行与排队详细信息

select s.resource_pool,s.usename, a.query_start, s.enqueue,s.status, substr(s.query,1,30) as query, statement_mem as estimate_mem,a.query_id from pgxc_session_wlmstat s, pgxc_stat_activity a where s.threadid=a.pid and status in ('pending','running') and s.attribute!='Internal' and s.usename!='Ruby' and s.usename <> 'omm' order by 1,2,4,5 limit 100;

查询结果如下:

2.3 整个集群资源池内作业运行与排队统计信息

select resource_pool, enqueue,status,count(1) as query_count,sum(statement_mem) as estimate_mem from pgxc_session_wlmstat where status in ('pending','running') and attribute!='Internal' and usename!='Ruby' and usename <> 'omm' group by 1,2,3 limit 100;

查询结果如下:

2.4 整个集群资源池内的作业运行和排队的统计信息

SELECT s.resource_pool AS rpname, COUNT(1) AS session_cnt,SUM(CASE WHEN a.state = 'active' THEN 1 ELSE 0 END) AS active_cnt,SUM(CASE WHEN s.enqueue ='Global' THEN 1 ELSE 0 END) AS global_wait,SUM(CASE WHEN s.lane = 'fast' and s.status = 'running' THEN 1 ELSE 0 END) AS fast_run,SUM(CASE WHEN s.lane = 'fast' and s.status = 'pending' and s.enqueue not in ('Global','None') THEN 1 ELSE 0 END) AS fast_wait,SUM(CASE WHEN s.lane = 'slow' and s.status = 'running' THEN 1 ELSE 0 END) AS slow_run,SUM(CASE WHEN s.lane = 'slow' and s.status = 'pending' and s.enqueue not in ('Global','None') THEN 1 ELSE 0 END) AS slow_wait,SUM(CASE WHEN s.status = 'running' THEN s.statement_mem ELSE 0 END) AS est_mem FROM pg_catalog.pgxc_session_wlmstat s,pg_catalog.pgxc_stat_activity a WHERE s.threadid=a.pid(+) AND s.attribute != 'Internal' AND s.resource_pool != 'root' GROUP BY 1;

查询结果如下:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。