ETL中,分区表子表未及时收集统计信息,导致sql执行耗时很长

文章目录

环境

系统平台:银河麒麟 (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后,问题解决。

相关推荐
LDG_AGI2 小时前
【搜索引擎】Elasticsearch(二):基于function_score的搜索排序
数据库·人工智能·深度学习·elasticsearch·机器学习·搜索引擎·推荐算法
枫叶林FYL2 小时前
【自然语言处理 NLP】7.2.2.4 去偏见技术与公平性优化
数据库
星川水月2 小时前
SQL 开窗函数排序详解
数据库·sql
荒川之神2 小时前
Oracle 数据仓库雪花模型设计原则(核心 + 落地 + Oracle 数据库适配)
数据库·数据仓库·oracle
_下雨天.2 小时前
Python 操作 MySQL 数据库
数据库
VIV-2 小时前
医院病房管理系统的数据库设计(SQL Server)
数据库·sql·sqlserver
荒川之神2 小时前
Oracle 数据仓库星型模型设计原则
数据库·数据仓库·oracle
Chasing__Dreams2 小时前
Mysql--基础知识点--96--count * VS count 列
数据库·mysql
老仙儿2 小时前
Room数据库框架的使用
数据库