Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vectorized aggregation with grouping by one fixed-size column #7341

Open
wants to merge 66 commits into
base: main
Choose a base branch
from

Conversation

akuzm
Copy link
Member

@akuzm akuzm commented Oct 14, 2024

The implementation uses the Postgres simplehash hash table for by-value fixed-size compressed columns.

The biggest improvement on a "sensible" query is about 90%, and a couple of queries show bigger improvements but these are very synthetic cases that don't make much sense:
https://grafana.ops.savannah-dev.timescale.com/d/fasYic_4z/compare-akuzm?orgId=1&var-branch=All&var-run1=3815&var-run2=3816&var-threshold=0.02&var-use_historical_thresholds=true&var-threshold_expression=2%20%2A%20percentile_cont%280.90%29&var-exact_suite_version=false&from=now-2d&to=now

Copy link

codecov bot commented Oct 14, 2024

Codecov Report

Attention: Patch coverage is 92.30769% with 28 lines in your changes missing coverage. Please review.

Project coverage is 82.27%. Comparing base (59f50f2) to head (10e66ad).
Report is 660 commits behind head on main.

Files with missing lines Patch % Lines
tsl/src/nodes/vector_agg/grouping_policy_hash.c 91.13% 3 Missing and 11 partials ⚠️
tsl/src/nodes/vector_agg/plan.c 80.00% 4 Missing and 5 partials ⚠️
...nodes/vector_agg/function/agg_many_vector_helper.c 95.00% 0 Missing and 1 partial ⚠️
...rc/nodes/vector_agg/hashing/batch_hashing_params.h 85.71% 0 Missing and 1 partial ⚠️
...rc/nodes/vector_agg/hashing/hash_strategy_common.c 94.44% 0 Missing and 1 partial ⚠️
.../src/nodes/vector_agg/hashing/hash_strategy_impl.c 98.18% 0 Missing and 1 partial ⚠️
..._agg/hashing/hash_strategy_impl_single_fixed_key.c 95.65% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #7341      +/-   ##
==========================================
+ Coverage   80.06%   82.27%   +2.21%     
==========================================
  Files         190      237      +47     
  Lines       37181    43668    +6487     
  Branches     9450    10957    +1507     
==========================================
+ Hits        29770    35930    +6160     
- Misses       2997     3403     +406     
+ Partials     4414     4335      -79     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

}
}

/*
* Currently the only grouping policy we use is per-batch grouping.
* Determine which grouping policy we are going to use.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Out of curiosity: Why is the grouping policy decided at execution time and not plan time? Should it not affect the plan and cost calc?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I moved it all to plan time, although as we discussed today on call, it doesn't affect the costs yet.

tsl/src/nodes/vector_agg/grouping_policy_hash.c Outdated Show resolved Hide resolved
tsl/src/nodes/vector_agg/grouping_policy_hash.h Outdated Show resolved Hide resolved
tsl/src/nodes/vector_agg/grouping_policy_hash.h Outdated Show resolved Hide resolved
akuzm and others added 4 commits December 18, 2024 17:51
Co-authored-by: Erik Nordström <819732+erimatnor@users.noreply.github.com>
Signed-off-by: Alexander Kuzmenkov <36882414+akuzm@users.noreply.github.com>
Co-authored-by: Erik Nordström <819732+erimatnor@users.noreply.github.com>
Signed-off-by: Alexander Kuzmenkov <36882414+akuzm@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants