更新时间:2024-12-11 GMT+08:00

监控并诊断GaussDB(DWS)集群TopSQL

背景信息

为提升租户侧自运维能力,识别占用资源高,执行时间长的慢SQL及各类异常SQL,GaussDB(DWS)提供了多维度的优化诊断功能,保障用户业务可以快速稳定运行。该功能对集群进行历史查询诊断分析、实时查询分析及实时会话分析。

  • 历史查询分析:基于历史TopSQL的监控,提供异常诊断能力。提供SQL趋势统计分析曲线图,展示SQL历史运行趋势;提供TopSQL异常诊断能力,识别资源占用高,运行时间长,以及运行异常的慢SQL,展示各类异常SQL数量,并支持过滤各类异常SQL;提供单SQL的一键诊断能力,一键诊断能力包括SQL语句检查,执行计划诊断和可视化,帮助用户分析执行计划,分析SQL语句执行性能消耗。
  • 实时查询分析:基于实时TopSQL的监控,分析正在执行中的实时资源消耗及查询计划。包含实时并发度及用户分布、锁等待数量、慢SQL数量、SQL排队数量、业务并发趋势分析、实时查询列表、实时查询数据汇总。
  • 实时会话分析:基于实时会话的监控,分析正在执行中的实时会话查询详细信息。包含实时会话数量及用户分布、空闲会话数量、活跃会话数量、CCN排队作业数量、会话数量趋势分析、实时会话列表、实时会话数据汇总。
  • 该特性仅8.1.3及以上集群版本支持。
  • 实时查询功能默认不开启,启动实时查询功能需要在“监控设置 > 监控采集”页面打开“实时查询监控”指标项,操作详情请参见监控采集。开启实时查询后可能会导致数据量过大,请谨慎操作。
  • 历史查询功能默认不开启,启动历史查询功能需要在“监控设置 > 监控采集”页面打开“历史查询监控”指标项,操作详情请参见监控采集。开启历史查询后可能会导致数据量过大,请谨慎操作。

进入优化诊断页面

  1. 登录GaussDB(DWS) 管理控制台。
  2. 在左导航栏单击“监控 > 优化诊断”,进入优化诊断页面。
  3. 在页面左上角下拉框选择需要优化诊断的集群,可查看集群历史查询分析、实时查询分析和实时会话分析。

    • 打开页面右上角“隐藏系统查询”按钮可隐藏系统用户查询。
    • 打开页面右上角“自动刷新”按钮并设置“刷新间隔”时间页面将自动刷新数据。
      图1 诊断分析页面

历史查询分析

该页面分为三个模块,包含历史查询总趋势分析、SQL质量趋势分析、SQL运行时长趋势、SQL质量概览、历史TopSQL查询详情、历史TopSQL一键诊断(执行计划诊断和SQL语句诊断)、历史数据汇总。

图2 历史查询分析
  • 历史查询总趋势:基于不同维度(集群/用户/实例/应用名称/资源池)的聚合统计。在指定时间范围内,可统计每分钟执行SQL数量。
  • SQL质量趋势:统计指定时间范围内,每类异常项的SQL数量。
  • SQL运行时长趋势:统计集群历史SQL执行时间(最小时长/平均时长/最大时长)。
  • SQL质量概览:提供各类异常SQL数量,单击卡片列表同步过滤。
    异常项包括:执行计划不下推、CPU超过10万秒、Not in子查询、时长超过1小时、内存使用超过10GB、下盘超50G、Streaming数量超50。

    针对不同集群可调整各类异常项的阈值,请联系技术支持人员设置。异常诊断规则基于GaussDB(DWS)集群历史TopSQL字段灵活配置。

  • 历史查询详情:可以浏览运行过的所有查询历史信息,支持条件搜索和全字段排序功能。单击列表右上方的设置按钮勾选需要在列表中展示的指标信息。
    • 查看详情:查看单历史TopSQL详情。单击单历史TopSQL所在行操作列的“查看详情”按钮,可查看查询语句的基本信息、在执行中的实时资源消耗、完整SQL语句以及查询计划。
    • 一键诊断:对单历史TopSQL进行诊断。单击单历史TopSQL所在行操作列的“一键诊断”按钮,可以查看SQL语句的静态检查和执行计划诊断结果并可视化。
      • 执行计划诊断:针对执行计划格式,对执行计划字符串进行解析,及对历史TopSQL表中执行计划进行诊断。提供可视化树形图,展示每个节点执行时长、type和扫描行数等信息。
        异常诊断项包含:重分布异常、估算异常、计算倾斜、分区扫描异常、跨逻辑集群查询。

        执行计划可视化想要显示每步执行时长,需设置参数“resource_track_level=perf”,否则无法查看。

        图3 计划可视化
        图4 计划诊断
      • SQL诊断:针对用户编写的SQL语句,结合GaussDB(DWS)SQL开发规范,对SQL语句进行静态检查,可分析出不符合规范的SQL,并给出修复意见。

        SQL开发规范是结合GaussDB(DWS)使用情况制定的,仅具有参考价值,给出的规范还需要根据用户使用情况后续进行迭代,详情请参见GaussDB(DWS)总体开发设计规范

        图5 SQL诊断
  • 数据汇总:按照不同维度(数据库/用户/资源池/应用名称/实例/uniqueSQLId)对历史TopSQL数据进行汇总,显示SQL数量和资源消耗情况。

    单击“查看详情”按钮可查看指定对象具体资源消耗详情信息。

实时查询分析

该页面分为三个模块,包含实时并发度及用户分布、锁等待数量、慢SQL数量、SQL排队数量、业务并发趋势分析、实时查询列表、实时查询数据汇总。

图6 实时查询分析
  • 实时并发度:显示当前集群实时运行的SQL数量,以及各个用户的并发度分布。
  • 锁等待数量:显示当前集群正在等待锁的SQL数量。
  • 慢SQL数量:显示duration时长超过60s的SQL数量。
  • SQL排队数量:显示集群全局排队、资源池排队和CCN排队总数量。
  • 业务并发:业务并发趋势分析,显示指定时间范围内,集群业务并发数量曲线图,并可按照不同维度(用户/节点/资源池)进行统计。
  • 实时查询:可以浏览集群中正在运行的所有查询信息,支持全字段排序和查杀功能。单击列表右上方的设置按钮勾选需要在列表中展示的指标信息。
    • 单击操作列“终止”按钮可终止单实时TopSQL查询。
    • 单击列表上方“终止查询”按钮可勾选多个实时TopSQL查询并终止。
    • 单击操作列“执行计划”按钮可查看实时TopSQL执行计划可视化树形图,展示每个节点执行时长、type和扫描行数等信息。

    新增细粒度权限控制功能,只有配置了操作权限的用户才能使用终止查询按钮。只读权限用户登录后终止查询按钮为灰色。

  • 实时数据汇总:按照不同维度(节点/Query ID/用户/资源池)对实时TopSQL查询数据进行汇总,显示统计正在运行SQL数量、排队数量、慢SQL数量、复杂语句数量、等锁数量、简单语句数量。

实时会话分析

该页面分为三个模块,包含实时会话数量及用户分布、空闲会话数量、活跃会话数量、CCN排队作业数量、会话数量趋势分析、实时会话列表、实时会话数据汇总。

图7 实时会话分析
  • 实时会话:显示当前集群实时会话总数量,以及各个用户的并发度分布。
  • 空闲会话数:显示当前集群空闲会话总数量。
  • 活跃会话总数:显示当前集群活跃会话总数量。
  • CCN排队作业数量:显示CCN排队总数量。
  • 会话数量:会话数量趋势分析,显示指定时间范围内,集群业务并发数量曲线图,并可按照不同维度(用户/节点/资源池)进行统计。
  • 实时会话列表:可以浏览到正在运行中的所有会话实时信息,支持全字段排序和查杀功能。单击列表右上方的设置按钮勾选需要在列表中展示的指标信息。
    • 单击操作列“终止”按钮可终止单实时会话。
    • 单击列表上方“终止会话”按钮可勾选多个会话并终止。

    新增细粒度权限控制功能,只有配置了操作权限的用户才能使用终止会话按钮。只读权限用户登录后终止会话按钮为灰色。

  • 实时数据汇总:按照不同维度(节点/用户/资源池)对实时会话数据进行汇总,显示统计活跃会话数、空闲会话数、CPU占用时间(s)、内存使用平均值(MB)、预估内存(MB)、下盘数据量(MB)。