暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB A 历史TopSQL

墨天轮 2019-10-12
1006

历史TopSQL

系统提供了query级别和算子级别的资源监控历史视图用例查询历史TopSQL。资源监控历史视图记录了查询作业运行结束时的资源使用情况(包括内存、下盘、CPU时间、IO等)和运行状态信息(包括报错、终止、异常等)以及性能告警信息。但对于由于FATAL、PANIC错误导致查询异常结束时,状态信息列只显示aborted,无法记录详细异常信息。特别的,对于查询解析,优化阶段的状态信息则无法监控。

历史视图具体的对外接口如下表所示:

视图级别

节点范围

查询视图

Query级别

当前CN

历史(Database Manager接口)

gs_wlm_session_history

历史(内部转储接口)

gs_wlm_session_info

所有CN

历史(Database Manager接口)

pgxc_wlm_session_history

历史(内部转储接口)

pgxc_wlm_session_info

算子级别

当前CN

历史(Database Manager接口)

gs_wlm_operator_history

历史(内部转储接口)

gs_wlm_operator_info

所有CN

历史(Database Manager接口)

pgxc_wlm_operator_history

历史(内部转储接口)

pgxc_wlm_operator_info

说明:

1. 对外接口通过不同的前缀(gs与pgxc)来区分单CN查询视图以及集群级别查询视图。普通用户仅支持登录到集群的某个CN查询以gs为前缀的视图。

2. 对于gs_wlm_session_info,gs_wlm_operator_info,pgxc_wlm_session_info以及pgxc_wlm_operator_info视图只支持在连接postgres数据库时查询。

前提条件

  • GUC参数enable_resource_track为on (默认为on)。
  • GUC参数resource_track_level为query或operator(默认为query)。设置方法详见表2。
  • GUC参数enable_resource_record为on(默认为off)。
  • GUC参数resource_track_duration小于作业执行时间(默认为60s)。
  • 监控作业类型为:资源监控实时视图(参见表1)中记录的作业结束时的执行时间大于或等于resource_track_duration的作业。
  • Cgroups功能正常加载,可通过gs_cgroup -P查看控制组信息。
  • 该功能会引起存储空间膨胀及轻微性能影响,不建议生成系统默认使用。

操作步骤

  • 以操作系统用户omm登录CN所在主机,执行source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile命令启动环境变量。
  • 使用如下命令连接数据库。

    gsql -d postgres -p 25308

    postgres为需要连接的数据库名称,25308为CN的端口号。

    连接成功后,系统显示类似如下信息:

    gsql ((GaussDB Kernel V300R002C00 build 50dc16a6) compiled at 2019-01-29 05:49:21 commit 1071 last mr 1373) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. postgres=#

  • 通过视图gs_wlm_session_history查询当前CN最近执行作业结束后的负载记录。

    1
    SELECT * FROM gs_wlm_session_history;
    

  • 通过视图pgxc_wlm_session_history查询所有CN最近执行作业结束后的负载记录。

    1
     SELECT * FROM pgxc_wlm_session_history;
    

  • 通过数据表gs_wlm_session_info查询当前CN作业执行结束后的负载记录。要查到历史记录,必须保证enable_resource_record为on。

    1
    SELECT * FROM gs_wlm_session_info;
    
    • 消耗内存最多的10个Query
    1
    SELECT * FROM gs_wlm_session_info order by max_peak_memory desc limit 10; 
    
    • 消耗CPU最多的10个Query
    1
    SELECT * FROM gs_wlm_session_info order by total_cpu_time desc limit 10;
    

  • 通过视图pgxc_wlm_session_info查询所有CN的作业执行结束后的负载记录。要查到历史记录,必须保证enable_resource_record为on。

    1
    SELECT * FROM pgxc_wlm_session_info;
    
    • 查询所有CN消耗时间最多的10个query
    1
    SELECT * FROM pgxc_wlm_session_info order by duration desc limit 10;
    

  • 通过视图gs_wlm_operator_history查询当前CN作业算子最近执行资源信息。要查到记录,必须保证resource_track_level为operator。

    1
    postgres=# SELECT * FROM gs_wlm_operator_history;
    

  • 通过视图pgxc_wlm_operator_history查询所有CN作业算子最近执行资源信息。要查到记录,必须保证resource_track_level为operator。

    1
    postgres=# SELECT * FROM pgxc_wlm_operator_history;
    

  • 通过数据表gs_wlm_operator_info查询当前CN作业算子历史执行资源信息。要查到记录,必须保证resource_track_level为operator和enable_resource_record为on。

    1
    postgres=# SELECT * FROM gs_wlm_operator_info;
    

  • 通过视图pgxc_wlm_operator_info查询所有CN作业算子历史执行资源信息。要查到记录,必须保证resource_track_level为operator和enable_resource_record为on。

    1
    postgres=# SELECT * FROM pgxc_wlm_operator_info;
    

说明:
  • 对于上述的视图信息,由于预设内存的限制,内存中能够保留的数据记录数量是有限的。实时的查询在结束后会导入到历史相关的视图中,历史的视图信息当其在内存hash表中记录的时间超过3分钟时进行自动清理。关于记录上限,对于query级别视图,当新的需要记录的查询超过内存约束记录数上限时,则当前查询无法记录,下条查询重新进行规则判断;在每个CN上,记query级别实时查询视图在内存(默认5MB)中可记录的最大数为max_session_realt_num(当前系统值为15240),历史视图在内存(默认10MB)中可记录的最大数为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。
  • 如果并发过高,避免需要记录的查询数量超过query级别视图和算子级别视图的值,可以通过参数session_statistics_memory修改实时查询视图的内存,通过参数ssession_history_memory修改历史查询视图的内存,内存增大和查询数量成正比。

查看更多:华为GaussDB 200 资源监控
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论