监控并诊断GaussDB(DWS)集群TopSQL
背景信息
为提升租户侧自运维能力,识别占用资源高,执行时间长的慢SQL及各类异常SQL,GaussDB(DWS)提供了多维度的优化诊断功能,保障用户业务可以快速稳定运行。该功能对集群进行历史查询诊断分析、实时查询分析及实时会话分析。
- 历史查询分析:基于历史TopSQL的监控,提供异常诊断能力。提供SQL趋势统计分析曲线图,展示SQL历史运行趋势;提供TopSQL异常诊断能力,识别资源占用高,运行时间长,以及运行异常的慢SQL,展示各类异常SQL数量,并支持过滤各类异常SQL;提供单SQL的一键诊断能力,一键诊断能力包括SQL语句检查,执行计划诊断和可视化,帮助用户分析执行计划,分析SQL语句执行性能消耗。
- 实时查询分析:基于实时TopSQL的监控,分析正在执行中的实时资源消耗及查询计划。包含实时并发度及用户分布、锁等待数量、慢SQL数量、SQL排队数量、业务并发趋势分析、实时查询列表、实时查询数据汇总。
- 实时会话分析:基于实时会话的监控,分析正在执行中的实时会话查询详细信息。包含实时会话数量及用户分布、空闲会话数量、活跃会话数量、CCN排队作业数量、会话数量趋势分析、实时会话列表、实时会话数据汇总。
进入优化诊断页面
- 登录GaussDB(DWS) 管理控制台。
- 在左导航栏单击“监控 > 优化诊断”,进入优化诊断页面。
- 在页面左上角下拉框选择需要优化诊断的集群,可查看集群历史查询分析、实时查询分析和实时会话分析。
- 打开页面右上角“隐藏系统查询”按钮可隐藏系统用户查询。
- 打开页面右上角“自动刷新”按钮并设置“刷新间隔”时间页面将自动刷新数据。
图1 诊断分析页面
历史查询分析
该页面分为三个模块,包含历史查询总趋势分析、SQL质量趋势分析、SQL运行时长趋势、SQL质量概览、历史TopSQL查询详情、历史TopSQL一键诊断(执行计划诊断和SQL语句诊断)、历史数据汇总。
- 历史查询总趋势:基于不同维度(集群/用户/实例/应用名称/资源池)的聚合统计。在指定时间范围内,可统计每分钟执行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诊断
- 执行计划诊断:针对执行计划格式,对执行计划字符串进行解析,及对历史TopSQL表中执行计划进行诊断。提供可视化树形图,展示每个节点执行时长、type和扫描行数等信息。
- 数据汇总:按照不同维度(数据库/用户/资源池/应用名称/实例/uniqueSQLId)对历史TopSQL数据进行汇总,显示SQL数量和资源消耗情况。
单击“查看详情”按钮可查看指定对象具体资源消耗详情信息。
实时查询分析
该页面分为三个模块,包含实时并发度及用户分布、锁等待数量、慢SQL数量、SQL排队数量、业务并发趋势分析、实时查询列表、实时查询数据汇总。
- 实时并发度:显示当前集群实时运行的SQL数量,以及各个用户的并发度分布。
- 锁等待数量:显示当前集群正在等待锁的SQL数量。
- 慢SQL数量:显示duration时长超过60s的SQL数量。
- SQL排队数量:显示集群全局排队、资源池排队和CCN排队总数量。
- 业务并发:业务并发趋势分析,显示指定时间范围内,集群业务并发数量曲线图,并可按照不同维度(用户/节点/资源池)进行统计。
- 实时查询:可以浏览集群中正在运行的所有查询信息,支持全字段排序和查杀功能。单击列表右上方的设置按钮勾选需要在列表中展示的指标信息。
- 单击操作列“终止”按钮可终止单实时TopSQL查询。
- 单击列表上方“终止查询”按钮可勾选多个实时TopSQL查询并终止。
- 单击操作列“执行计划”按钮可查看实时TopSQL执行计划可视化树形图,展示每个节点执行时长、type和扫描行数等信息。
新增细粒度权限控制功能,只有配置了操作权限的用户才能使用终止查询按钮。只读权限用户登录后终止查询按钮为灰色。
- 实时数据汇总:按照不同维度(节点/Query ID/用户/资源池)对实时TopSQL查询数据进行汇总,显示统计正在运行SQL数量、排队数量、慢SQL数量、复杂语句数量、等锁数量、简单语句数量。
实时会话分析
该页面分为三个模块,包含实时会话数量及用户分布、空闲会话数量、活跃会话数量、CCN排队作业数量、会话数量趋势分析、实时会话列表、实时会话数据汇总。
- 实时会话:显示当前集群实时会话总数量,以及各个用户的并发度分布。
- 空闲会话数:显示当前集群空闲会话总数量。
- 活跃会话总数:显示当前集群活跃会话总数量。
- CCN排队作业数量:显示CCN排队总数量。
- 会话数量:会话数量趋势分析,显示指定时间范围内,集群业务并发数量曲线图,并可按照不同维度(用户/节点/资源池)进行统计。
- 实时会话列表:可以浏览到正在运行中的所有会话实时信息,支持全字段排序和查杀功能。单击列表右上方的设置按钮勾选需要在列表中展示的指标信息。
- 单击操作列“终止”按钮可终止单实时会话。
- 单击列表上方“终止会话”按钮可勾选多个会话并终止。
新增细粒度权限控制功能,只有配置了操作权限的用户才能使用终止会话按钮。只读权限用户登录后终止会话按钮为灰色。
- 实时数据汇总:按照不同维度(节点/用户/资源池)对实时会话数据进行汇总,显示统计活跃会话数、空闲会话数、CPU占用时间(s)、内存使用平均值(MB)、预估内存(MB)、下盘数据量(MB)。