时序引擎对以下聚合计算算子进行了优化,实现了增量计算,显著提升了性能:corr, covar, first, last, max, med, min, percentile, quantile, std, var, sum, sum2, sum3, sum4, wavg, wsum, count, firstNot, ifirstNot, lastNot, ilastNot, imax, imin, nunique, prod, sem, mode, searchK。
1. 计算缓存的增量结果可以帮助本次计算提升性能,具体的做法为由于窗口每次移动一个 step, step 又必须被 window 整除,这样每次滑动,只改变一个 step, 引擎内部缓存每个 step 的计算结果,如果是计算 sum,则只要将之前的 step 减掉然后加上新数据的 step 窗口即可,从而达到提升计算性能的目的。ts engine 的触发计算是同时触发一批(可以理解成 step)数据一起计算,然后输出一条聚合结果,耗时就是从被触发到输出的耗时。
2. 不是很理解你这里的时间戳概念。如果是用的数据的时间戳计算,触发是依据数据的时间戳进行的,step 1s,那就是 1s 的间隔算一次。如果是按照系统时间,上游卡住确实会影响正常的输出,如果指定了 fill,中间空的窗口会 fill 以后输出。