文章目录
环境
系统平台:银河麒麟 (X86_64)
版本:9.0.3
症状
ETL场景:
有表A,A分区子表 A_p20250101,A_p20250102等,按天分区;
有表B,B分区子表 B_p20250101,B_p20250102等,按天分区;
ETL流程如下:

从流程图中可以看到,node1 生成A_p20250101的数据后,立即执行node2,node2使用node1生成的A_p20250101作为原表之一。
问题现象:
单独执行node2节点,sql执行很快;执行整个流程时,node2执行非常慢。
问题原因
通过执行计划看到执行快时是表c驱动表A_p20250101,执行慢时是表A_p20250101驱动表c;执行计划不合理导致执行很慢。
解决方案
通过排查确认是node1生成表A_p20250101数据后,立即执行了node2,表A_p20250101未及时收集统计信息,使用了错误的执行计划,导致执行慢;在存在类似情况的所有sql前都添加analyze后,问题解决。