Re: Calcite在嵌套多层包含where条件的sql语句时优化器OOM

2020-09-24 文章 Leonard Xu
Hi >看debug日志99%是CalcMergeRule , 我看blink用的是FlinkCalcMergeRule , > 在matches方法里加了些对none-deterministic表达式的过滤,, > 于是我将CalcMergeRule替换成FlinkCalcMergeRule, 并在FlinkRuleSets里做了更新 , > 重跑后debug日志是99%是更新过的FlinkCalcMergeRule 虽然debug日志看是CalcMergeRule一直在触发,但替换CalcMergeRule后也没有改变, 推测是其他rule引起的。 有特别的需要要使用old

Re: Calcite在嵌套多层包含where条件的sql语句时优化器OOM

2020-09-23 文章 jun su
hi danny & godfrey 看debug日志99%是CalcMergeRule , 我看blink用的是FlinkCalcMergeRule , 在matches方法里加了些对none-deterministic表达式的过滤,, 于是我将CalcMergeRule替换成FlinkCalcMergeRule, 并在FlinkRuleSets里做了更新 , 重跑后debug日志是99%是更新过的FlinkCalcMergeRule Danny Chan 于2020年9月23日周三 下午12:32写道: > 应该是碰到节点 cycle 引用了,导致优化 rule

Re: Calcite在嵌套多层包含where条件的sql语句时优化器OOM

2020-09-22 文章 Danny Chan
应该是碰到节点 cycle 引用了,导致优化 rule 一直重复重复触发,可以将 debug 日志打开,看下是哪个 rule 被频繁触发了,之前修过一个类似的问题[1],可以参考下 [1] https://issues.apache.org/jira/browse/CALCITE-3121 Best, Danny Chan 在 2020年9月23日 +0800 AM10:23,jun su ,写道: > hi godfrey, > 方便说下是哪些rule fix了这个问题么? 我对这个比较好奇 , 想看下是什么原因导致的 > > godfrey he 于2020年9月23日周三

Re: Calcite在嵌套多层包含where条件的sql语句时优化器OOM

2020-09-22 文章 godfrey he
例如 calc merge rule,还有calc,agg等其他相关rule,点比较散。得具体看 jun su 于2020年9月23日周三 上午10:22写道: > hi godfrey, > 方便说下是哪些rule fix了这个问题么? 我对这个比较好奇 , 想看下是什么原因导致的 > > godfrey he 于2020年9月23日周三 上午10:09写道: > > > Hi Jun, > > > > 可能是old planner缺少一些rule导致遇到了corner case, > > blink planner之前解过一些类似的案例。 > > > > jun su

Re: Calcite在嵌套多层包含where条件的sql语句时优化器OOM

2020-09-22 文章 jun su
hi godfrey, 方便说下是哪些rule fix了这个问题么? 我对这个比较好奇 , 想看下是什么原因导致的 godfrey he 于2020年9月23日周三 上午10:09写道: > Hi Jun, > > 可能是old planner缺少一些rule导致遇到了corner case, > blink planner之前解过一些类似的案例。 > > jun su 于2020年9月23日周三 上午9:53写道: > > > hi godfrey, > > > > 刚看了下, blink应该也会用hep , 上文说错了 > > > > jun su

Re: Calcite在嵌套多层包含where条件的sql语句时优化器OOM

2020-09-22 文章 godfrey he
Hi Jun, 可能是old planner缺少一些rule导致遇到了corner case, blink planner之前解过一些类似的案例。 jun su 于2020年9月23日周三 上午9:53写道: > hi godfrey, > > 刚看了下, blink应该也会用hep , 上文说错了 > > jun su 于2020年9月23日周三 上午9:19写道: > > > hi godfrey, > > 我用了最新代码的blink没这个问题, 我看代码flink是先用hep然后进valcano, 而blink貌似没用hep, > >

Re: Calcite在嵌套多层包含where条件的sql语句时优化器OOM

2020-09-22 文章 jun su
hi godfrey, 刚看了下, blink应该也会用hep , 上文说错了 jun su 于2020年9月23日周三 上午9:19写道: > hi godfrey, > 我用了最新代码的blink没这个问题, 我看代码flink是先用hep然后进valcano, 而blink貌似没用hep, > 我将hep代码注释后valcano的迭代次数会大幅减少, 语句嵌套10层基本在4000次左右能获取最佳方案,我再debug看下原因 > > godfrey he 于2020年9月22日周二 下午8:58写道: > >> blink planner

Re: Calcite在嵌套多层包含where条件的sql语句时优化器OOM

2020-09-22 文章 jun su
hi godfrey, 我用了最新代码的blink没这个问题, 我看代码flink是先用hep然后进valcano, 而blink貌似没用hep, 我将hep代码注释后valcano的迭代次数会大幅减少, 语句嵌套10层基本在4000次左右能获取最佳方案,我再debug看下原因 godfrey he 于2020年9月22日周二 下午8:58写道: > blink planner 有这个问题吗? > > jun su 于2020年9月22日周二 下午3:27写道: > > > hi all, > > > > 环境: flink-1.9.2 flink table

Re: Calcite在嵌套多层包含where条件的sql语句时优化器OOM

2020-09-22 文章 godfrey he
blink planner 有这个问题吗? jun su 于2020年9月22日周二 下午3:27写道: > hi all, > > 环境: flink-1.9.2 flink table planner > 现象: 代码一直在 VolcanoPlanner.findBestExp()方法中出不来, 直到OOM > > 发现在嵌套4层时 findBestExp方法中while(true)会循环3w多次后成功退出, 嵌套5层会达到几十万级别, 导致进程OOM > --- > 代码: > >

Calcite在嵌套多层包含where条件的sql语句时优化器OOM

2020-09-22 文章 jun su
hi all, 环境: flink-1.9.2 flink table planner 现象: 代码一直在 VolcanoPlanner.findBestExp()方法中出不来, 直到OOM 发现在嵌套4层时 findBestExp方法中while(true)会循环3w多次后成功退出, 嵌套5层会达到几十万级别, 导致进程OOM --- 代码: fbTableEnv.registerTableSource("source",orcTableSource) val select =