# 监控并诊断DWS集群
#### 背景信息
为提升租户侧自运维能力，识别占用资源高，执行时间长的慢SQL及各类异常SQL，DWS提供了多维度的优化诊断功能，保障用户业务可以快速稳定运行。该功能对集群进行历史查询诊断分析、实时查询分析、实时会话分析及表诊断分析。
- [历史查询分析]：基于历史TopSQL的监控，提供异常诊断能力。提供SQL趋势统计分析曲线图，展示SQL历史运行趋势；提供TopSQL异常诊断能力，识别资源占用高，运行时间长，以及运行异常的慢SQL，展示各类异常SQL数量，并支持过滤各类异常SQL；提供单SQL的一键诊断能力，一键诊断能力包括SQL语句检查，执行计划诊断和可视化，帮助用户分析执行计划，分析SQL语句执行性能消耗。
- [实时查询分析]：基于实时TopSQL的监控，分析正在执行中的实时资源消耗及查询计划。包含实时并发度及用户分布、锁等待数量、慢SQL数量、SQL排队数量、业务并发趋势分析、实时查询列表、实时查询数据汇总。
- [实时会话分析]：基于实时会话的监控，分析正在执行中的实时会话查询详细信息。包含实时会话数量及用户分布、空闲会话数量、活跃会话数量、CCN排队作业数量、会话数量趋势分析、实时会话列表、实时会话数据汇总。
- [表空间诊断]：基于集群表指标信息的监控，租户侧集群每天采集一次指标数据，主要内容包括表名、数据库名、模式名、表大小、脏页率、倾斜率、数据量、索引大小、分布方式、分区数、分布方式、压缩级别、分布列等信息，基于已有的开发规范，对设计不合理的表进行识别诊断，并给出对应的优化建议。
- [锁阻塞分析]：基于集群表锁信息的监控，租户侧集群每分钟采集一次指标数据，主要内容包括被锁对象类型、被锁对象节点、被锁对象数据库、被锁对象Schema、被锁对象表名、被锁对象查询数量、申请锁的用户名、申请锁的事务开始时间、申请锁的线程最新查询ID、申请锁线程的最新语句、申请锁的线程ID、锁级别、是否持有锁等信息。
 
#### 约束与限制
- 该特性仅8.1.3及以上集群版本支持。
- 实时查询功能默认不开启，启动实时查询功能需要在**"监控设置 \> 监控采集"** 页面打开**"实时查询监控"** 指标项，操作详情请参见[监控采集](https://support.huaweicloud.com/mgtg-dws/dws_01_00135.html#ZH-CN_TOPIC_0000002617625279__zh-cn_topic_0000001076708691_section149871230683)。开启实时查询后可能会导致数据量过大，请谨慎操作。
- 历史查询功能默认不开启，启动历史查询功能需要在**"监控设置 \> 监控采集"** 页面打开**"历史查询监控"** 指标项，操作详情请参见[监控采集](https://support.huaweicloud.com/mgtg-dws/dws_01_00135.html#ZH-CN_TOPIC_0000002617625279__zh-cn_topic_0000001076708691_section149871230683)。开启历史查询后可能会导致数据量过大，请谨慎操作。
- 表空间诊断功能默认不开启，如需要该功能，可联系技术支持人员开启。
- 锁阻塞分析默认不开启，如需要该功能，可联系技术支持人员开启。
 
#### 进入优化诊断页面
1. [登录DWS管理控制台](https://console.huaweicloud.com/dws)。
2. 在左导航栏单击"**监控 \> 优化诊断**"，进入优化诊断页面。
3. 在页面左上角下拉框选择需要优化诊断的集群，可查看集群历史查询分析、实时查询分析和实时会话分析。 
   - 打开页面右上角**"隐藏系统查询"**可隐藏系统用户查询。
   
   - 打开页面右上角**"自动刷新"** 并设置**"刷新间隔"** 时间页面将自动刷新数据。
     图1诊断分析页面   
     ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002617505227.png "点击放大") 
   
   
   
   
 
 #### 历史查询分析
该页面分为三个模块，包含历史查询总趋势分析、SQL质量趋势分析、SQL运行时长趋势、SQL质量概览、历史TopSQL查询详情、历史TopSQL一键诊断（执行计划诊断和SQL语句诊断）、历史数据汇总。
图2历史查询分析   
![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002587065642.png "点击放大")
- **历史查询总趋势**：基于不同维度（集群/用户/实例/应用名称/资源池）的聚合统计。在指定时间范围内，可统计每分钟执行SQL数量。
- **SQL质量趋势**：统计指定时间范围内，每类异常项的SQL数量。
- **S** **QL运行时长趋势：**统计集群历史SQL执行时间（最小时长/平均时长/最大时长）。
- **SQL质量概览** ：提供各类异常SQL数量，单击卡片列表同步过滤。
  异常项包括：执行计划不下推、CPU超过10万秒、Not in子查询、时长超过1小时、内存使用超过10GB、下盘超50G、Streaming数量超50。
  ![](https://support.huaweicloud.com/mgtg-dws/public_sys-resources/note_3.0-zh-cn.png)
  针对不同集群可调整各类异常项的阈值，请联系技术支持人员设置。异常诊断规则基于DWS集群历史TopSQL字段灵活配置。
  
- **历史查询详情：** 可以浏览运行过的所有查询历史信息，支持条件搜索和全字段排序功能。单击列表右上方的设置图标勾选需要在列表中展示的指标信息。
  - **查看详情：** 查看单历史TopSQL详情。单击单历史TopSQL所在行操作列的**"查看详情"**，可查看查询语句的基本信息、在执行中的实时资源消耗、完整SQL语句以及查询计划。
  
  - **一键诊断** ：对单历史TopSQL进行诊断。单击单历史TopSQL所在行操作列的**"一键诊断"** ，可以查看SQL语句的静态检查和执行计划诊断结果并可视化。
    - **执行计划诊断** ：针对执行计划格式，对执行计划字符串进行解析，及对历史TopSQL表中执行计划进行诊断。提供可视化树形图，展示每个节点执行时长、type和扫描行数等信息。其中执行计划可视化想要显示每步执行时长，需设置参数**"resource_track_level=perf"** ，否则无法查看。
      异常诊断项包含：重分布异常、估算异常、计算倾斜、分区扫描异常、跨逻辑集群查询。
      图3计划可视化   
      ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002587065652.png "点击放大")
      图4计划诊断   
      ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002587225558.png "点击放大") 
    
    - **SQL诊断** ：针对用户编写的SQL语句，结合DWS SQL开发规范，对SQL语句进行静态检查，可分析出不符合规范的SQL，并给出修复意见。
      ![](https://support.huaweicloud.com/mgtg-dws/public_sys-resources/note_3.0-zh-cn.png)
      SQL开发规范是结合DWS使用情况制定的，仅具有参考价值，给出的规范还需要根据用户使用情况后续进行迭代，详情请参见[DWS总体开发设计规范](https://support.huaweicloud.com/devg-dws/dws_04_0075.html)。
      图5SQL诊断   
      ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002587225556.png "点击放大") 
     
   

- **数据汇总** ：按照不同维度（数据库/用户/资源池/应用名称/实例/uniqueSQLId）对历史TopSQL数据进行汇总，显示SQL数量和资源消耗情况。
  单击**"查看详情"**可查看指定对象具体资源消耗详情信息。
  
 
 #### 实时查询分析
该页面分为三个模块，包含实时并发度及用户分布、锁等待数量、慢SQL数量、SQL排队数量、业务并发趋势分析、实时查询列表、实时查询数据汇总。
图6实时查询分析   
![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002617505229.png "点击放大")
- **实时并发度**：显示当前集群实时运行的SQL数量，以及各个用户的并发度分布。
- **锁等待数量**：显示当前集群正在等待锁的SQL数量。
- **慢SQL数量：**显示duration时长超过60s的SQL数量。
- **SQL排队数量：**显示集群全局排队、资源池排队和CCN排队总数量。
- **业务并发：**业务并发趋势分析，显示指定时间范围内，集群业务并发数量曲线图，并可按照不同维度（用户/节点/资源池）进行统计。
- **实时查询：** 可以浏览集群中正在运行的所有查询信息，支持全字段排序和查杀功能。单击列表右上方的设置图标勾选需要在列表中展示的指标信息。
  - 单击操作列**"终止"**可终止单实时TopSQL查询。
  
  - 单击列表上方**"终止查询"**可勾选多个实时TopSQL查询并终止。
  
  - 单击操作列**"执行计划"**可查看实时TopSQL执行计划可视化树形图，展示每个节点执行时长、type和扫描行数等信息。新增细粒度权限控制功能，只有配置了操作权限的用户才能使用终止查询功能。只读权限用户登录后终止查询按钮为灰色。
   
- **实时数据汇总**：按照不同维度（节点/Query ID/用户/资源池）对实时TopSQL查询数据进行汇总，显示统计正在运行SQL数量、排队数量、慢SQL数量、复杂语句数量、等锁数量、简单语句数量。
 
 #### 实时会话分析
该页面分为三个模块，包含实时会话数量及用户分布、空闲会话数量、活跃会话数量、CCN排队作业数量、会话数量趋势分析、实时会话列表、实时会话数据汇总。
图7实时会话分析   
![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002587225560.png "点击放大")
- **实时会话**：显示当前集群实时会话总数量，以及各个用户的并发度分布。
- **空闲会话数：**显示当前集群空闲会话总数量。
- **活跃会话总数：**显示当前集群活跃会话总数量。
- **CCN排队作业数量**：显示CCN排队总数量。
- **会话数量**：会话数量趋势分析，显示指定时间范围内，集群业务并发数量曲线图，并可按照不同维度（用户/节点/资源池）进行统计。
- **实时会话列表** ：可以浏览到正在运行中的所有会话实时信息，支持全字段排序和查杀功能。单击列表右上方的设置图标勾选需要在列表中展示的指标信息。
  - 单击操作列**"终止"**可终止单个实时会话。
  
  - 单击列表上方**"终止会话"**可勾选多个会话并终止。新增细粒度权限控制功能，只有配置了操作权限的用户才能使用终止会话功能。只读权限用户登录后终止会话按钮为灰色。
   
- **实时数据汇总：**按照不同维度（节点/用户/资源池）对实时会话数据进行汇总，显示统计活跃会话数、空闲会话数、CPU占用时间（s）、内存使用平均值（MB）、预估内存（MB）、下盘数据量（MB）。
 
 #### 表空间诊断
该页面分为三个模块，包含磁盘信息、模式使用情况、表空间趋势、表诊断概览、表数据详情。
图8表空间诊断   
![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002617625337.png "点击放大")
- **磁盘信息概览**：显示当前集群数据盘/系统盘/日志盘的总大小、已用大小和可用大小，以及单盘最大使用率。单击磁盘使用率右边的图标可显示具体使用的节点和磁盘，帮助用户快速定位单盘使用率最高的磁盘。
- **模式使用情况** ：显示当前集群模式的使用情况，单击操作列**"查看趋势"**支持查看过去7天、15天和30天的历史趋势。
- **表空间趋势**：支持按照不同维度（集群/数据库/模式）进行统计，查看表大小、索引大小、脏页大小的历史曲线。
- **表诊断概览**：表诊断规则包括表分布方式异常、倾斜异常、脏页异常、统计信息异常、分布键异常、压缩方式异常、单表索引数异常和分区数异常。界面显示各个异常的表数量，单击卡片，界面下方数据列表可相应进行过滤。
- **表数据详情** ：可以浏览当前集群的业务表信息，包括数据库、模式、表名、表大小、表行数、分区数、索引个数、索引大小、脏页率、倾斜率、日增量、分布键数量、分布键详情等信息。
  - 单击操作列**"表趋势"**可查看指定表的索引大小、表大小和脏页大小的历史曲线。
  
  - 单击操作列**"表回收"**可对指定表进行Vacuum Full回收操作。
  
  - 单击操作列**"表分析"**可对指定表进行Analyze分析操作。
   
 
 #### 锁阻塞分析
该页面分为两个模块，包含锁阻塞趋势图和被锁对象列表。
图9锁阻塞分析   
![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002617505241.png "点击放大")
- **锁阻塞趋势图**：显示当前被锁对象类型的锁数量历史趋势，支持选择近1小时、近6小时、近12小时、近1天、近7天和近30天时间点。
- **被锁对象列表** ：显示当前被锁对象列表，包括被锁对象类型、被锁对象节点、被锁对象数据库、被锁对象schema、被锁对象表名和被锁对象查询数量。单击![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002587225564.png)图标，显示申请锁相关查询以及持有锁查询。当单击趋势图上历史时间点时，列表将同步刷新显示所选择历史时间点的被锁对象列表。
 
