文档首页/ 数据仓库服务 GaussDB(DWS)/ 故障排除/ 集群性能/ 未收集统计信息导致查询性能差
更新时间:2024-07-01 GMT+08:00

未收集统计信息导致查询性能差

问题现象

SQL查询性能差,对语句执行EXPLAIN VERBOSE时有Warning信息。

原因分析

查询中涉及到的表或列没有收集统计信息。统计信息是优化器生成执行计划的基础,没有收集统计信息,优化器生成的执行计划会非常差,如果统计信息未收集,会导致多种多样表现形式的性能问题。例如,等值关联走NestLoop,大表broadcast,集群CPU持续增高等问题。

分析过程

  1. 通过EXPLAIN VERBOSE/EXPLAIN PERFORMANCE打印语句的执行计划。

    执行计划中会有语句未收集统计信息的告警,并且通常E-rows估算非常小。

  2. 上述例子中,在打印的执行计划中有Warning提示信息,提示有哪些列在这个执行计划中用到了,但是这些列没有统计信息。

    在CN的pg_log日志中也有会有类似的Warning信息。同时,E-rows会比实际值小很多。

处理方法

周期性地运行ANALYZE,或者在对表的大部分内容执行更改操作后立即执行ANALYZE。