Files
scylladb/service
Avi Kivity 121971ec0f Merge "storage_proxy: specialize query_singular() for non-IN queries" from Gleb
"
query_singular() accepts a partition_range_vector, corresponding to an IN
query. But such queries are rare compared to single-partition queries.

Co-routinise the code and special case non-IN queries by avoiding
the call to map_reduce. Also replace executers array with small_vector
to avoid an allocation in the common case.

perf_simple_query --smp 1 --operations-per-shard 1000000 --task-quota-ms 10:

before: median 204545.04 tps ( 81.1 allocs/op,  15.1 tasks/op,   48828 insns/op)

after:  median 219769.97 tps ( 74.1 allocs/op,  12.1 tasks/op,   46495 insns/op)

So, a ~7% improvement in tps and 5% improvement in instructions per op.
Also large reduction in tasks and allocations.

This is an alternative proposal to https://github.com/scylladb/scylla/pull/8909.
The benefit of this one is that it does not duplicate any code (almost).
"

* 'query_singular-coroutine' of github.com:scylladb/scylla-dev:
  storage_proxy: avoid map_reduce in storage_proxy::query_singular if only one pk is queried
  storage_proxy: use small_vector in storage_proxy::query_singular to store executors
  storage_proxy: co-routinize storage_proxy::query_singular()
2021-06-27 16:30:19 +03:00
..