Flink 的 Over 窗口 例如在 range over window 场合,会将 input 的记录存储在 state 里面。 如果 input 的字段比较多,但是参与聚合运算的字段比较少。 这样会导致 state 非常的大。
从 RowTimeRangeBoundedPrecedingFunction 里面逻辑看, 不参与agg运算的字段,在 onTimer 时期输出之后,是可以清理了的。 这样能提升Over 窗口的处理性能吗? SQL例子: SELECT col_1, col_2, col_3, col_4, col_5, col_6, -- 字段内容比较长 col_7, -- 字段内容比较长 col_8, -- 字段内容比较长 col_9, -- 字段内容比较长 col_10, col_11, col_12, col_13, col_14, col_15, col_16, col_17, col_18, col_19, sum(col_10) OVER w AS day_col_10, sum(col_11) OVER w AS day_col_11, sum(col_12) OVER w AS day_col_12, sum(col_13) OVER w AS day_col_13, sum(col_14) OVER w AS day_col_14, sum(col_15) OVER w AS day_col_15, sum(col_16) OVER w AS day_col_16 FROM table_3 window w as ( PARTITION BY col_1, col_2 ORDER BY rowtime RANGE BETWEEN INTERVAL '1' DAY preceding AND CURRENT ROW) -- ************************************** tivanli **************************************
