SQL 自诊断
用户在执行查询或者执行INSERT/DELETE/UPDATE/CREATE TABLE AS 语句时,
可能
会遇到性能问题。这种情况下,通过查询PG_CONTROL_GROUP_CONFIG 、
GS_SESSION_MEMORY_DETAIL 视图的warning 字段可以获得对应查询可能导致性能问题
的告警信息,为性能调优提供参考。
SQL 自诊断的告警类型与resource_track_level 的设置有关系。如果resource_track_level
设置为query,则可以诊断多列/单列统计信息未收集和SQL 不下推的告警。如果
resource_track_level 设置为operator,则可以诊断所有的告警场景。
SQL 自诊断的诊断范围与resource_track_cost 的设置有关系。当SQL 的代价大于
resource_track_cost 时,SQL 才会被诊断。SQL 的代价可以通过explain 来确认。
告警场景
目前支持对多列/单列统计信息未收集导致性能问题的场景上报告警。
如果存在单列或者多列统计信息未收集,
则上报相关告警。
调优方法可以参考更新统计
信息和统计信息调优。
告警信息示例:
整表的统计信息未收集:
Statistic Not Collect:
schema_test.t1
单列统计信息未收集:
Statistic Not Collect:
schema_test.t2(c1,c2)
GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
544
多列统计信息未收集:
Statistic Not Collect:
schema_test.t3((c1,c2))
单列和多列统计信息未收集:
Statistic Not Collect:
schema_test.t4(c1,c2)
schema_test.t4((c1,c2))
规格约束
(1)
告警字符串长度上限为2048。如果告警信息超过这个长度(例如存在大量未收集统计
信息的超长表名、列名等信息)则不告警,只上报warning:
WARNING, "Planner issue report is truncated, the rest of planner issues will be skipped"
(2)
如果query 存在limit 节点(即查询语句中包含limit),则不会上报limit 节点以下的
Operator 级别的告警。