VictoriaMetrics/app/vmselect/promql
Aliaksandr Valialkin 41a0fdaf39
app/vmselect/promql: optimize repeated SLI-like instant queries with lookbehind windows >= 1d
Repeated instant queries with long lookbehind windows, which contain one of the following rollup functions,
are optimized via partial result caching:

- sum_over_time()
- count_over_time()
- avg_over_time()
- increase()
- rate()

The basic idea of optimization is to calculate

  rf(m[d] @ t)

as

  rf(m[offset] @ t) + rf(m[d] @ (t-offset)) - rf(m[offset] @ (t-d))

where rf(m[d] @ (t-offset)) is cached query result, which was calculated previously

The offset may be in the range of up to 1 hour.
2023-10-31 19:25:23 +01:00
..
active_queries.go Makefile: update golangci-lint from v1.51.2 to v1.54.2 2023-09-01 10:16:42 +02:00
aggr.go app/vmselect: reduce lock contention for heavy aggregation requests (#5119) 2023-10-10 13:45:20 +02:00
aggr_incremental.go app/vmselect/promql: optimize repeated SLI-like instant queries with lookbehind windows >= 1d 2023-10-31 19:25:23 +01:00
aggr_incremental_test.go app/vmselect/promql: fix TestIncrementalAggr test on systems less than 3 CPU cores 2023-03-20 20:37:18 -07:00
aggr_test.go app/vmselect/promql: add mode() aggregate function 2020-07-20 15:31:20 +03:00
binary_op.go app/vmselect: reduce lock contention for heavy aggregation requests (#5119) 2023-10-10 13:45:20 +02:00
eval.go app/vmselect/promql: optimize repeated SLI-like instant queries with lookbehind windows >= 1d 2023-10-31 19:25:23 +01:00
eval_test.go all: add support for or filters in series selectors 2023-07-16 00:06:33 -07:00
exec.go app/vmselect: reduce lock contention for heavy aggregation requests (#5119) 2023-10-10 13:45:20 +02:00
exec_test.go app/vmselect/promql: add labels_equal(q, "label1", "label2", ...) function 2023-10-16 21:50:11 +02:00
memory_limiter.go app/vmselect: return back the logic for limits the amounts of memory occupied by concurrently executed queries if -search.maxMemoryPerQuery isn't set 2022-10-10 21:45:13 +03:00
memory_limiter_test.go app/vmselect: return back the logic for limits the amounts of memory occupied by concurrently executed queries if -search.maxMemoryPerQuery isn't set 2022-10-10 21:45:13 +03:00
parser.go all: add support for or filters in series selectors 2023-07-16 00:06:33 -07:00
rollup.go app/vmselect/promql: completely substitute median_over_time() WITH template with regular median_over_time() rollup function 2023-09-25 15:28:12 +02:00
rollup_result_cache.go app/vmselect/promql: optimize repeated SLI-like instant queries with lookbehind windows >= 1d 2023-10-31 19:25:23 +01:00
rollup_result_cache_test.go app/vmselect/promql: optimize repeated SLI-like instant queries with lookbehind windows >= 1d 2023-10-31 19:25:23 +01:00
rollup_test.go Makefile: update golangci-lint from v1.51.2 to v1.54.2 2023-09-01 10:16:42 +02:00
rollup_timing_test.go app/vmselect: use consistent randomizer in tests 2023-01-23 19:27:25 -08:00
timeseries.go app/vmselect/promql: optimize repeated SLI-like instant queries with lookbehind windows >= 1d 2023-10-31 19:25:23 +01:00
timeseries_test.go app/vmselect/promql: add test to ensure 8-byte alignment (#3948) 2023-03-16 09:01:42 -07:00
transform.go app/vmselect/promql: add labels_equal(q, "label1", "label2", ...) function 2023-10-16 21:50:11 +02:00
transform_test.go app/vmselect/promql: follow-up for 79e1c6a6fc 2023-03-27 18:03:36 -07:00
tzdata.go all: add go:build lines for Go1.17 2021-07-26 15:48:21 +03:00