数仓的等待视图中,为什么会有Hashjoin-nestloop?

💡 原文中文,约1200字,阅读约需3分钟。
📝

内容提要

本文介绍了GaussDB(DWS)中的HashJoin-nestloop等待视图的含义和影响。当内存不足时,会通过内外表交换或执行nestloop使查询平稳进行,防止内存报错。建议将参数hashjoin_spill_strategy设置为2以规避问题。

🎯

关键要点

  • GaussDB(DWS)中有3种常见的join方式:HashJoin、MergeJoin和NestLoop。
  • 等待视图中显示HashJoin-nestloop表示内存不足时的处理方式。
  • 当两张大表join时,若统计信息不准确,可能导致内存膨胀和内存过载。
  • hashjoin_spill_strategy参数控制hashjoin的行为,默认为0,取值范围为0-6。
  • 取值为2时,hashjoin行为与原本一致,即使内存不足也会强制执行hashjoin。
  • HashJoin-nestloop可能导致性能劣化,尤其在数据量和统计信息差异较大时。
  • 为避免HashJoin-nestloop导致的超时,可以将hashjoin_spill_strategy设置为2。
🏷️

标签

➡️

继续阅读