GBase 8a
其他
文章
如何通过trace判断发生了笛卡尔积
发表于2025-12-25 11:05:2428次浏览2个评论
在Join里发生笛卡尔积,可能是因为执行计划不合适,各个表join顺序不合理造成的,造成结果集过大
出现的现象有时会直接在trace里报错“too many tuples"
有时会执行极慢
在one -pass hash join里, 如果看到文件分片数过多(如大于10万),且长时间不出结果,则也可能是出现了笛卡尔积
Begin one-pass hash partitioning: divide xxx tuples into xxx parts.
例如:
traverse dim: 150000000 tuples, match dim: 24002640460 tuples 行号过多
手动join顺序调整,如果集群自动评估出来的顺序不合理,可以使用hint的方式强制按书写顺序执行
单机设置 _gbase_disable_condition_reorder=2 后可以保证单机接收到的指令不改变顺序
同时集群层书写sql时需要加hint
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526