云数据库 GAUSSDB-SQL自诊断:告警场景

时间:2024-12-19 14:11:11

告警场景

目前支持对以下7种导致性能问题的场景上报告警。

  • 单列统计信息未收集

如果存在单列统计信息未收集,则上报相关告警。调优方法可以参考更新统计信息统计信息调优

告警信息示例:

整表的统计信息未收集:

Statistic Not Collect:
    schema_test.t1

单列统计信息未收集:

Statistic Not Collect:
    schema_test.t2(c1,c2)
  • SQL不下推
    对于不下推的SQL,尽可能详细上报导致不下推的原因。调优方法可以参考案例语句下推调优
    • 对于函数导致的不下推,告警导致不下推的函数名信息;
    • 对于不支持下推的语法,会告警对应语法不支持下推,例如:含有With Recursive,Distinct On,row表达式,返回值为record类型的,会告警相应语法不支持下推等等。

告警信息示例:

SQL is not plan-shipping, reason : "With Recursive" can not be shipped"
SQL is not plan-shipping, reason : "Function now() can not be shipped"
SQL is not plan-shipping, reason : "Function string_agg() can not be shipped"
  • HashJoin中大表做内表

如果在表连接过程中使用了Hashjoin,且连接的内表行数是外表行数的10倍或以上;同时内表在每个DN上的平均行数大于10万行,且发生了下盘,则上报相关告警。调优方法可以参考使用plan hint调优执行计划

告警信息示例:

PlanNode[7] Large Table is INNER in HashJoin “Hash Aggregate”
  • 大表等值连接使用Nestloop

如果在表连接过程中使用了nestloop,并且两个表中较大表的行数平均每个DN上的行数大于10万行、表的连接中存在等值连接,则上报相关告警。调优方法可以参考使用plan hint调优执行计划

告警信息示例:

PlanNode[5] Large Table with Equal-Condition use Nestloop"Nested Loop"
  • 大表Broadcast

如果在Broadcast算子中,平均每DN的行数大于10万行,则告警大表broadcast。调优方法可以参考使用plan hint调优执行计划

告警信息示例:

PlanNode[5] Large Table in Broadcast "Streaming(type: BROADCAST dop: 1/2)"
  • 数据倾斜

某表在各DN上的分布,存在某DN上的行数是另一DN上行数的10倍或以上,且有DN中的行数大于10万行,则上报相关告警。调优方法可以参考案例选择合适的分布列数据倾斜调优

告警信息示例:

PlanNode[6] DataSkew:"Seq Scan", min_dn_tuples:0, max_dn_tuples:524288
  • 估算不准

如果优化器的估算行数比实际行数大于10万行,并且估算行数和实际行数中较大值是较小值的10倍或以上,则上报相关告警。调优方法可以参考使用plan hint调优执行计划

告警信息示例:

PlanNode[5] Inaccurate Estimation-Rows: "Hash Join" A-Rows:0, E-Rows:52488
support.huaweicloud.com/distributed-devg-v2-gaussdb/gaussdb-12-0185.html