Prometheus逻辑运算符(And)是否采用短路求值机制?
Prometheus
and运算符是否支持短路求值? Prometheus的and逻辑运算符不支持C/C++式的短路求值,具体说明如下:
- Prometheus的查询基于时间序列集合操作,
and的核心作用是对两个查询结果做交集运算:只有同时出现在左右两个结果集中的时间序列才会被保留,最终结果采用左侧查询的样本值。 - 执行时,Prometheus会完整计算左右两个查询的全部结果,再进行交集筛选,不会因为左侧某个时间序列不满足条件就跳过对该序列的右侧查询计算。
举个具体例子,对于查询(QueryA > 0) and (queryB > 100),Prometheus会先找出所有满足QueryA > 0的时间序列,再找出所有满足queryB > 100的时间序列,最后保留同时存在于这两个集合里的序列,全程不会触发类似C/C++的短路逻辑。
内容的提问来源于stack exchange,提问作者RaselAshraf
相关产品推荐
相关产品推荐

