Commit Graph

1408 Commits (c46cf6fdcf1223c265958a929de049925fdffed9)

Author SHA1 Message Date
Edd Robinson c46cf6fdcf refactor: rename partition to chunk 2020-12-28 21:08:56 +00:00
Edd Robinson c0dc93a8cb refactor: change partition to chunk 2020-12-28 21:08:56 +00:00
Andrew Lamb 0d0ec0ce69
chore: Upgrade arrow dependencies (#603)
* chore: Update arrow dependencies to latest

* refactor: Update code to conform to new arrow api
2020-12-28 16:08:09 -05:00
Andrew Lamb 5fa77c32cc
feat: Add "Chunks" to the Mutable Buffer (#596)
* refactor: Update docs, remove unused field

* refactor: rename partition -> chunk

* feat: Introduce new partition, which is a holder for Chunks

* refactor: Remove use of wal from mutable database

* refactor: cleanups, remove last direct use of chunks

* fix: delete old benchmarks

* fix: clippy sacrifice

* docs: tidy up comments

* refactor: remove unused error types

* chore: remove commented out tests
2020-12-28 07:10:25 -05:00
Paul Dix c4952fc58d
Merge pull request #584 from influxdata/pd-routerify-app
chore: move http API over to Routerify
2020-12-26 10:38:38 -05:00
Paul Dix b998a916b3 chore: update http API with more logging and better error hanlding 2020-12-24 16:45:23 -06:00
Paul Dix 1d200c5c77 chore: move http API over to Routerify
This moves the HTTP API over to Routerify, which has the basic route parsing logic that will enable the API design for IOx.

I had a little trouble with the error handling in Routerify so I ended up creating a macro for constructing error responses in the HTTP API. I'm not sure what I think of this pattern so I'm interested in what others think. Another option would be to have two functions for each API endpoint. One which is x_handler with a Routerify function signature. Then another which is just x that has the Result<Response<Body>, ApplicationError> return type, which would make using the ? operator work in those functions. That would eliminate the need for the return_err macro.

I'm happy to refactor to that if people prefer it.
2020-12-24 16:45:20 -06:00
Edd Robinson f7febf3797
Merge pull request #582 from influxdata/er/refactor/segment-rename
refactor: rename the Segment Store to the Read Buffer
2020-12-22 21:48:11 +00:00
Edd Robinson fa8afe845d refactor: fix benchmarks 2020-12-22 21:26:05 +00:00
Edd Robinson b1aabc14b2 refactor: rename Segment to RowGroup 2020-12-22 21:26:04 +00:00
Edd Robinson 0af935d123 refactor: rename segment module to row_group 2020-12-22 21:26:04 +00:00
Edd Robinson 199ba68769 refactor: rename segment_store crate to read_buffer 2020-12-22 21:26:04 +00:00
Andrew Lamb 48c43b136c
refactor: rename write_buffer --> mutable_buffer (#595)
* refactor: git mv write_buffer mutable_buffer

* refactor: update crate name references

* refactor: update some more references
2020-12-22 10:49:53 -05:00
Andrew Lamb 163f34c27b
feat: report support for read_group in capabilities request (#586) 2020-12-22 10:06:48 -05:00
Andrew Lamb 263af1eeac
feat: implement read_group in the write_buffer (#583)
* feat: implement read_group in the write_buffer

* fix: Apply suggestions from code review

Co-authored-by: Carol (Nichols || Goulding) <193874+carols10cents@users.noreply.github.com>

* fix: rustfmt

* fix: adjust tests for min/max

* fix: Update write_buffer/src/table.rs

Co-authored-by: Carol (Nichols || Goulding) <193874+carols10cents@users.noreply.github.com>

Co-authored-by: Carol (Nichols || Goulding) <193874+carols10cents@users.noreply.github.com>
2020-12-22 09:03:20 -05:00
Andrew Lamb 28eac06d8f
refactor: Organize window_bounds the same as selector functions (#594)
* refactor: Organize window_bounds the same as selector functions

* fix: add missing file
2020-12-21 12:51:36 -05:00
Andrew Lamb bb96142564
chore: Update arrow dependencies, remove custom min/max implementation (#585)
* chore: Update arrow dependency

* fix: Update code for changes in datafusion

* fix: use arrow version of min_boolean
2020-12-21 12:31:39 -05:00
Andrew Lamb e96d309a5e
fix: do not error in gRPC if a Group::By is specified with no group columns (#593) 2020-12-21 11:49:52 -05:00
Andrew Lamb ea1e47a71e
chore: tweak logging messages (#592)
* chore: tweak logging messages

* chore: Include log message in error logging
2020-12-21 11:39:04 -05:00
Edd Robinson 7d17539751
Merge pull request #580 from influxdata/er/feat/segment-read-group-single-col
perf: use vector to build aggregates for single-column grouping
2020-12-18 22:22:02 +00:00
Edd Robinson 1e2d6875a0 refactor: update segment_store/src/segment.rs
Co-authored-by: Andrew Lamb <alamb@influxdata.com>
2020-12-18 22:12:21 +00:00
Edd Robinson eb4ce25b7a perf: optimise read_group when only grouping on one column 2020-12-18 22:12:21 +00:00
Edd Robinson 83032bcab2 test: add single column groupings to benchmarks 2020-12-18 22:12:21 +00:00
Edd Robinson 573dfc826f refactor: move filtering and materialising logic 2020-12-18 22:12:21 +00:00
Andrew Lamb 47c6763f24
docs: Add documentation about data life cycle (#578) 2020-12-18 13:33:35 -05:00
Andrew Lamb 463a20202e
docs: Add reference to docs directory and a table of contents (#577) 2020-12-18 12:39:38 -05:00
Dom feb3064f92
Merge pull request #576 from influxdata/dom/atomic-server-id
perf: avoid locking to load server ID
2020-12-18 14:08:47 +00:00
Andrew Lamb 8ac51ef3e2
Merge branch 'main' into dom/atomic-server-id 2020-12-18 08:48:12 -05:00
Edd Robinson 11b98d344f
Merge pull request #573 from influxdata/er/feat/segment-read-group-hash-key
perf: pack group keys into integer for `read_group` performance
2020-12-18 13:09:34 +00:00
Edd Robinson da752ed900 refactor: add doc comment 2020-12-18 12:57:56 +00:00
Edd Robinson 7a6d2f0d82 perf: optimised u128 hashmap key
This commit adds an optimised `read_group` path for dealing with queries
where fewer than five columns are being grouped. In these cases we can
improve performance by packing the encoded ids for each column we are
grouping on into a single `u128` value. This then becomes the group key
that is used as the group key in the hash map.

When grouping by four or fewer columns, perforamnce improves by 40-70%.

Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20_columns_2_rows_500000
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20_columns_2_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20_columns_2_rows_500000: Collecting 100 samples in estimated 5.6090 s (600 iterations)
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20_columns_2_rows_500000: Analyzing
segment_read_group_all_time_vary_cardinality/cardinality_20_columns_2_rows_500000
                        time:   [9.2663 ms 9.2869 ms 9.3068 ms]
                        thrpt:  [2.1490 Kelem/s 2.1536 Kelem/s 2.1584 Kelem/s]
                 change:
                        time:   [-43.972% -43.809% -43.651%] (p = 0.00 < 0.05)
                        thrpt:  [+77.465% +77.963% +78.483%]
                        Performance has improved.
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_200_columns_2_rows_500000
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_200_columns_2_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_200_columns_2_rows_500000: Collecting 100 samples in estimated 5.7914 s (600 iterations)
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_200_columns_2_rows_500000: Analyzing
segment_read_group_all_time_vary_cardinality/cardinality_200_columns_2_rows_500000
                        time:   [9.4963 ms 9.5255 ms 9.5584 ms]
                        thrpt:  [20.924 Kelem/s 20.996 Kelem/s 21.061 Kelem/s]
                 change:
                        time:   [-42.611% -42.417% -42.210%] (p = 0.00 < 0.05)
                        thrpt:  [+73.041% +73.663% +74.249%]
                        Performance has improved.
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high severe
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_2000_columns_2_rows_500000
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_2000_columns_2_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_2000_columns_2_rows_500000: Collecting 100 samples in estimated 5.0613 s (500 iterations)
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_2000_columns_2_rows_500000: Analyzing
segment_read_group_all_time_vary_cardinality/cardinality_2000_columns_2_rows_500000
                        time:   [9.9595 ms 9.9860 ms 10.013 ms]
                        thrpt:  [199.75 Kelem/s 200.28 Kelem/s 200.81 Kelem/s]
                 change:
                        time:   [-43.450% -43.159% -42.881%] (p = 0.00 < 0.05)
                        thrpt:  [+75.074% +75.928% +76.833%]
                        Performance has improved.
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000: Collecting 100 samples in estimated 6.0549 s (400 iterations)
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000: Analyzing
segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000
                        time:   [15.100 ms 15.167 ms 15.240 ms]
                        thrpt:  [1.3123 Melem/s 1.3186 Melem/s 1.3245 Melem/s]
                 change:
                        time:   [-35.221% -34.961% -34.637%] (p = 0.00 < 0.05)
                        thrpt:  [+52.992% +53.754% +54.370%]
                        Performance has improved.
Found 13 outliers among 100 measurements (13.00%)
  10 (10.00%) high mild
  3 (3.00%) high severe

Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000: Collecting 100 samples in estimated 5.5845 s (400 iterations)
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000: Analyzing
segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000
                        time:   [13.893 ms 13.967 ms 14.047 ms]
                        thrpt:  [1.4238 Melem/s 1.4320 Melem/s 1.4396 Melem/s]
                 change:
                        time:   [-38.414% -38.035% -37.656%] (p = 0.00 < 0.05)
                        thrpt:  [+60.401% +61.382% +62.375%]
                        Performance has improved.
Found 5 outliers among 100 measurements (5.00%)
  3 (3.00%) high mild
  2 (2.00%) high severe
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000: Collecting 100 samples in estimated 6.2989 s (400 iterations)
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000: Analyzing
segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000
                        time:   [15.569 ms 15.632 ms 15.702 ms]
                        thrpt:  [1.2737 Melem/s 1.2794 Melem/s 1.2846 Melem/s]
                 change:
                        time:   [-34.404% -34.108% -33.802%] (p = 0.00 < 0.05)
                        thrpt:  [+51.061% +51.763% +52.448%]
                        Performance has improved.
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000: Collecting 100 samples in estimated 6.5689 s (400 iterations)
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000: Analyzing
segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000
                        time:   [16.630 ms 16.683 ms 16.739 ms]
                        thrpt:  [1.1948 Melem/s 1.1988 Melem/s 1.2026 Melem/s]
                 change:
                        time:   [-34.769% -34.463% -34.173%] (p = 0.00 < 0.05)
                        thrpt:  [+51.914% +52.586% +53.301%]
                        Performance has improved.
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high mild

Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_250000
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_250000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_250000: Collecting 100 samples in estimated 5.7865 s (600 iterations)
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_250000: Analyzing
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_250000
                        time:   [9.6025 ms 9.6197 ms 9.6363 ms]
                        thrpt:  [2.0755 Melem/s 2.0791 Melem/s 2.0828 Melem/s]
                 change:
                        time:   [-33.373% -33.249% -33.128%] (p = 0.00 < 0.05)
                        thrpt:  [+49.540% +49.811% +50.089%]
                        Performance has improved.
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000: Collecting 100 samples in estimated 5.6980 s (400 iterations)
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000: Analyzing
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000
                        time:   [14.364 ms 14.812 ms 15.502 ms]
                        thrpt:  [1.2901 Melem/s 1.3502 Melem/s 1.3924 Melem/s]
                 change:
                        time:   [-38.419% -36.424% -33.583%] (p = 0.00 < 0.05)
                        thrpt:  [+50.564% +57.293% +62.388%]
                        Performance has improved.
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) high mild
  3 (3.00%) high severe
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000: Collecting 100 samples in estimated 6.2573 s (300 iterations)
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000: Analyzing
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000
                        time:   [20.850 ms 20.904 ms 20.958 ms]
                        thrpt:  [954.30 Kelem/s 956.77 Kelem/s 959.23 Kelem/s]
                 change:
                        time:   [-32.472% -32.262% -32.044%] (p = 0.00 < 0.05)
                        thrpt:  [+47.154% +47.627% +48.088%]
                        Performance has improved.
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) low mild
  3 (3.00%) high mild
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000: Collecting 100 samples in estimated 5.1162 s (200 iterations)
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000: Analyzing
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000
                        time:   [25.505 ms 25.580 ms 25.654 ms]
                        thrpt:  [779.61 Kelem/s 781.86 Kelem/s 784.15 Kelem/s]
                 change:
                        time:   [-35.201% -34.993% -34.775%] (p = 0.00 < 0.05)
                        thrpt:  [+53.316% +53.829% +54.323%]
                        Performance has improved.
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) low mild
2020-12-18 12:57:56 +00:00
Dom 558cf6fe1a perf: avoid locking to load server ID
Moves the server ID value outside of the mutex-wrapped `Config` type and
into the `Server` struct, synchronising threads using an atomic instead.

This prevents any calls to `require_id()` from having to contend for a
read lock on the config mutex while maintaining lineraisaion of ID
values - all threads see the change as soon as it is set.

On x86 this synchronisation is actually completely "free" - memory
accesses are totally ordered, so this turns into a compile fence to
prevent LLVM changing program order at compile time with no runtime
overhead at all.

Previously the ID value was wrote as part of the config, but this is no
longer the case. It should be easy to add back in, but it appears to be
redundant as the ID is required to construct the path to the config when
loading in the first place.
2020-12-18 11:12:41 +00:00
Paul Dix 70ff4267ce
chore: Connect server crate to http routes and server command (#569)
* chore: Connect server crate to http routes and server command

This updates the http_routes and main server to use the Server crate. This is the first step in a larger effort to start hooking up the initial IOx API and get things running end to end with in-memory database, WAL buffer, and object storage.

For the time being, this disables the previous disk based WAL. Or rather, it uses the WriteBufferDb without it. That means that this IOx server has no persistence until later. Because of this, the restart in the end-to-end was removed.

Later PRs will add the WAL buffer and restart logic that loads from object store. We can opt to bring the local disk based WAL back later, but it will likely require some refactoring to work with how the WAL Buffer will operate.
2020-12-17 18:48:41 -05:00
Andrew Lamb 0de5a1e309
feat: Implement selector functions first, last, min, and max (#565)
* feat: Implement selector functions first, last, min, and max

* fix: update for changes in arrow

* docs: reference to min/max boolean array ticket

* docs: add reference to selector structs

* docs: Update query/src/func/selectors.rs
2020-12-17 17:51:36 -05:00
Edd Robinson 5ed977f2d1
Merge pull request #572 from influxdata/er/feat/segment-read-group-hash-perf
perf: Improve `read_group` performance with faster hash function
2020-12-17 21:36:55 +00:00
Edd Robinson daaa9634b8 refactor: restrict encoded group key types
This commit refactors `read_group` such that it only needs to support
encoded group key types for dictionary columns (which are encoded with
`u32` values). This simplifies the code and removes a rather clunky
`u32` -> `i64` conversion.

`read_group` does not support grouping by time (i64`) or other numeric
columns.
2020-12-17 17:16:49 +00:00
Edd Robinson 7a40bd5971 perf: use hashbrown raw_entry API
This commit swaps out the std library `HashMap` for the implementation
provided by the `hashbrown` crate. Not only does this allow us to use
the raw entry API, but it increases performance through the use of a
faster non-crytographically safe hashing function. We do not need an
expensive hash function for this code path.

Benchmark improvements are roughly 20-40%.

Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20_columns_2_rows_500000
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20_columns_2_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20_columns_2_rows_500000: Collecting 100 samples in estimated 6.5961 s (400 iterations)
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20_columns_2_rows_500000: Analyzing
segment_read_group_all_time_vary_cardinality/cardinality_20_columns_2_rows_500000
                        time:   [16.502 ms 16.527 ms 16.558 ms]
                        thrpt:  [1.2079 Kelem/s 1.2101 Kelem/s 1.2120 Kelem/s]
                 change:
                        time:   [-40.808% -40.616% -40.428%] (p = 0.00 < 0.05)
                        thrpt:  [+67.863% +68.394% +68.942%]
                        Performance has improved.
Found 8 outliers among 100 measurements (8.00%)
  4 (4.00%) high mild
  4 (4.00%) high severe
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_200_columns_2_rows_500000
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_200_columns_2_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_200_columns_2_rows_500000: Collecting 100 samples in estimated 5.0698 s (300 iterations)
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_200_columns_2_rows_500000: Analyzing
segment_read_group_all_time_vary_cardinality/cardinality_200_columns_2_rows_500000
                        time:   [16.531 ms 16.542 ms 16.555 ms]
                        thrpt:  [12.081 Kelem/s 12.090 Kelem/s 12.099 Kelem/s]
                 change:
                        time:   [-43.304% -43.047% -42.810%] (p = 0.00 < 0.05)
                        thrpt:  [+74.856% +75.582% +76.378%]
                        Performance has improved.
Found 8 outliers among 100 measurements (8.00%)
  5 (5.00%) high mild
  3 (3.00%) high severe
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_2000_columns_2_rows_500000
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_2000_columns_2_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_2000_columns_2_rows_500000: Collecting 100 samples in estimated 5.2590 s (300 iterations)
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_2000_columns_2_rows_500000: Analyzing
segment_read_group_all_time_vary_cardinality/cardinality_2000_columns_2_rows_500000
                        time:   [17.497 ms 17.568 ms 17.648 ms]
                        thrpt:  [113.33 Kelem/s 113.84 Kelem/s 114.30 Kelem/s]
                 change:
                        time:   [-38.468% -38.188% -37.880%] (p = 0.00 < 0.05)
                        thrpt:  [+60.978% +61.782% +62.518%]
                        Performance has improved.
Found 12 outliers among 100 measurements (12.00%)
  12 (12.00%) high severe
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000: Collecting 100 samples in estimated 7.0471 s (300 iterations)
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000: Analyzing
segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000
                        time:   [23.305 ms 23.320 ms 23.336 ms]
                        thrpt:  [857.05 Kelem/s 857.64 Kelem/s 858.20 Kelem/s]
                 change:
                        time:   [-35.933% -35.778% -35.648%] (p = 0.00 < 0.05)
                        thrpt:  [+55.396% +55.711% +56.087%]
                        Performance has improved.
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high mild

Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000: Collecting 100 samples in estimated 6.8058 s (300 iterations)
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000: Analyzing
segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000
                        time:   [22.475 ms 22.540 ms 22.622 ms]
                        thrpt:  [884.10 Kelem/s 887.31 Kelem/s 889.87 Kelem/s]
                 change:
                        time:   [-34.249% -34.051% -33.768%] (p = 0.00 < 0.05)
                        thrpt:  [+50.984% +51.633% +52.089%]
                        Performance has improved.
Found 11 outliers among 100 measurements (11.00%)
  2 (2.00%) high mild
  9 (9.00%) high severe
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000: Collecting 100 samples in estimated 7.0631 s (300 iterations)
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000: Analyzing
segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000
                        time:   [23.683 ms 23.724 ms 23.779 ms]
                        thrpt:  [841.08 Kelem/s 843.02 Kelem/s 844.49 Kelem/s]
                 change:
                        time:   [-34.575% -34.419% -34.241%] (p = 0.00 < 0.05)
                        thrpt:  [+52.070% +52.482% +52.847%]
                        Performance has improved.
Found 9 outliers among 100 measurements (9.00%)
  6 (6.00%) high mild
  3 (3.00%) high severe
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000: Collecting 100 samples in estimated 5.1007 s (200 iterations)
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000: Analyzing
segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000
                        time:   [25.379 ms 25.456 ms 25.545 ms]
                        thrpt:  [782.93 Kelem/s 785.67 Kelem/s 788.06 Kelem/s]
                 change:
                        time:   [-37.254% -36.988% -36.701%] (p = 0.00 < 0.05)
                        thrpt:  [+57.981% +58.699% +59.373%]
                        Performance has improved.
Found 10 outliers among 100 measurements (10.00%)
  2 (2.00%) high mild
  8 (8.00%) high severe

Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_250000
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_250000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_250000: Collecting 100 samples in estimated 5.7756 s (400 iterations)
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_250000: Analyzing
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_250000
                        time:   [14.404 ms 14.411 ms 14.419 ms]
                        thrpt:  [1.3870 Melem/s 1.3878 Melem/s 1.3885 Melem/s]
                 change:
                        time:   [-28.007% -27.893% -27.798%] (p = 0.00 < 0.05)
                        thrpt:  [+38.500% +38.683% +38.903%]
                        Performance has improved.
Found 7 outliers among 100 measurements (7.00%)
  3 (3.00%) high mild
  4 (4.00%) high severe
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000: Collecting 100 samples in estimated 6.9256 s (300 iterations)
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000: Analyzing
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000
                        time:   [23.191 ms 23.299 ms 23.419 ms]
                        thrpt:  [854.02 Kelem/s 858.42 Kelem/s 862.40 Kelem/s]
                 change:
                        time:   [-32.647% -32.302% -31.912%] (p = 0.00 < 0.05)
                        thrpt:  [+46.868% +47.715% +48.471%]
                        Performance has improved.
Found 11 outliers among 100 measurements (11.00%)
  11 (11.00%) high severe
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000: Collecting 100 samples in estimated 6.1544 s (200 iterations)
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000: Analyzing
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000
                        time:   [30.813 ms 30.859 ms 30.916 ms]
                        thrpt:  [646.92 Kelem/s 648.10 Kelem/s 649.07 Kelem/s]
                 change:
                        time:   [-37.155% -36.779% -36.436%] (p = 0.00 < 0.05)
                        thrpt:  [+57.322% +58.174% +59.121%]
                        Performance has improved.
Found 12 outliers among 100 measurements (12.00%)
  5 (5.00%) high mild
  7 (7.00%) high severe
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000: Collecting 100 samples in estimated 7.8548 s (200 iterations)
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000: Analyzing
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000
                        time:   [39.303 ms 39.349 ms 39.405 ms]
                        thrpt:  [507.55 Kelem/s 508.27 Kelem/s 508.86 Kelem/s]
                 change:
                        time:   [-36.857% -36.699% -36.576%] (p = 0.00 < 0.05)
                        thrpt:  [+57.669% +57.975% +58.371%]
                        Performance has improved.
Found 14 outliers among 100 measurements (14.00%)
  8 (8.00%) high mild
  6 (6.00%) high severe
2020-12-17 17:15:49 +00:00
Edd Robinson 8a220da79e
Merge pull request #560 from influxdata/er/feat/read_group_hashing
feat: implement read_group aggregates with a hashmap
2020-12-17 11:59:33 +00:00
Edd Robinson 3e93a4c89f test: add extra test case for predicate 2020-12-17 11:43:56 +00:00
Edd Robinson e4f9cc5eb4 refactor: address PR feedback
Co-authored-by: Andrew Lamb <alamb@influxdata.com>

Co-authored-by: Carol (Nichols || Goulding) <193874+carols10cents@users.noreply.github.com>
2020-12-17 11:43:52 +00:00
Edd Robinson e4ffa77c9d perf: use HashMap instead of BTreeMap
Benchmark changes are below. In summary, for large maps (lots of group
keys) or for large segments (many rows to check the group keys of), a
`HashMap` provides a significant advantage over a `BTreMap`.

Naturually this is likely down to the need to maintain a sorted
representation in `BTreeMap`.

Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20_columns_2_rows_500000
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20_columns_2_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20_columns_2_rows_500000: Collecting 100 samples in estimated 5.5199 s (200 iterations)
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20_columns_2_rows_500000: Analyzing
segment_read_group_all_time_vary_cardinality/cardinality_20_columns_2_rows_500000
                        time:   [27.761 ms 27.831 ms 27.914 ms]
                        thrpt:  [716.48  elem/s 718.62  elem/s 720.43  elem/s]
                 change:
                        time:   [+24.636% +25.140% +25.591%] (p = 0.00 < 0.05)
                        thrpt:  [-20.376% -20.089% -19.766%]
                        Performance has regressed.
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high severe
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_200_columns_2_rows_500000
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_200_columns_2_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_200_columns_2_rows_500000: Collecting 100 samples in estimated 5.7696 s (200 iterations)
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_200_columns_2_rows_500000: Analyzing
segment_read_group_all_time_vary_cardinality/cardinality_200_columns_2_rows_500000
                        time:   [28.927 ms 29.045 ms 29.176 ms]
                        thrpt:  [6.8550 Kelem/s 6.8858 Kelem/s 6.9141 Kelem/s]
                 change:
                        time:   [-18.275% -17.911% -17.546%] (p = 0.00 < 0.05)
                        thrpt:  [+21.280% +21.819% +22.362%]
                        Performance has improved.
Found 16 outliers among 100 measurements (16.00%)
  1 (1.00%) high mild
  15 (15.00%) high severe
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_2000_columns_2_rows_500000
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_2000_columns_2_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_2000_columns_2_rows_500000: Collecting 100 samples in estimated 5.7383 s (200 iterations)
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_2000_columns_2_rows_500000: Analyzing
segment_read_group_all_time_vary_cardinality/cardinality_2000_columns_2_rows_500000
                        time:   [28.373 ms 28.422 ms 28.483 ms]
                        thrpt:  [70.218 Kelem/s 70.368 Kelem/s 70.490 Kelem/s]
                 change:
                        time:   [-43.553% -43.451% -43.324%] (p = 0.00 < 0.05)
                        thrpt:  [+76.442% +76.839% +77.158%]
                        Performance has improved.
Found 10 outliers among 100 measurements (10.00%)
  2 (2.00%) high mild
  8 (8.00%) high severe
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000: Collecting 100 samples in estimated 7.4085 s (200 iterations)
Benchmarking segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000: Analyzing
segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000
                        time:   [36.243 ms 36.312 ms 36.396 ms]
                        thrpt:  [549.50 Kelem/s 550.79 Kelem/s 551.84 Kelem/s]
                 change:
                        time:   [-55.005% -54.889% -54.761%] (p = 0.00 < 0.05)
                        thrpt:  [+121.05% +121.67% +122.24%]
                        Performance has improved.
Found 18 outliers among 100 measurements (18.00%)
  12 (12.00%) high mild
  6 (6.00%) high severe

Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000: Collecting 100 samples in estimated 6.9060 s (200 iterations)
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000: Analyzing
segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000
                        time:   [34.158 ms 34.178 ms 34.200 ms]
                        thrpt:  [584.79 Kelem/s 585.17 Kelem/s 585.51 Kelem/s]
                 change:
                        time:   [-54.179% -54.026% -53.895%] (p = 0.00 < 0.05)
                        thrpt:  [+116.90% +117.51% +118.24%]
                        Performance has improved.
Found 11 outliers among 100 measurements (11.00%)
  5 (5.00%) high mild
  6 (6.00%) high severe
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000: Collecting 100 samples in estimated 7.3211 s (200 iterations)
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000: Analyzing
segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000
                        time:   [36.129 ms 36.175 ms 36.234 ms]
                        thrpt:  [551.97 Kelem/s 552.87 Kelem/s 553.58 Kelem/s]
                 change:
                        time:   [-57.655% -56.955% -56.451%] (p = 0.00 < 0.05)
                        thrpt:  [+129.63% +132.32% +136.15%]
                        Performance has improved.
Found 9 outliers among 100 measurements (9.00%)
  1 (1.00%) high mild
  8 (8.00%) high severe
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000: Collecting 100 samples in estimated 8.0395 s (200 iterations)
Benchmarking segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000: Analyzing
segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000
                        time:   [40.291 ms 40.398 ms 40.526 ms]
                        thrpt:  [493.51 Kelem/s 495.07 Kelem/s 496.38 Kelem/s]
                 change:
                        time:   [-59.068% -58.943% -58.812%] (p = 0.00 < 0.05)
                        thrpt:  [+142.79% +143.57% +144.31%]
                        Performance has improved.
Found 11 outliers among 100 measurements (11.00%)
  3 (3.00%) high mild
  8 (8.00%) high severe

Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_250000
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_250000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_250000: Collecting 100 samples in estimated 6.0187 s (300 iterations)
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_250000: Analyzing
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_250000
                        time:   [19.963 ms 19.986 ms 20.016 ms]
                        thrpt:  [999.18 Kelem/s 1.0007 Melem/s 1.0019 Melem/s]
                 change:
                        time:   [-53.554% -52.764% -52.162%] (p = 0.00 < 0.05)
                        thrpt:  [+109.04% +111.70% +115.30%]
                        Performance has improved.
Found 7 outliers among 100 measurements (7.00%)
  1 (1.00%) high mild
  6 (6.00%) high severe
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000: Collecting 100 samples in estimated 6.8805 s (200 iterations)
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000: Analyzing
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000
                        time:   [34.356 ms 34.415 ms 34.491 ms]
                        thrpt:  [579.86 Kelem/s 581.14 Kelem/s 582.13 Kelem/s]
                 change:
                        time:   [-53.993% -53.870% -53.740%] (p = 0.00 < 0.05)
                        thrpt:  [+116.17% +116.78% +117.36%]
                        Performance has improved.
Found 8 outliers among 100 measurements (8.00%)
  1 (1.00%) high mild
  7 (7.00%) high severe
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000: Warming up for 3.0000 s
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000: Collecting 100 samples in estimated 9.6729 s (200 iterations)
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000: Analyzing
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000
                        time:   [48.565 ms 48.811 ms 49.100 ms]
                        thrpt:  [407.33 Kelem/s 409.74 Kelem/s 411.82 Kelem/s]
                 change:
                        time:   [-54.391% -54.170% -53.892%] (p = 0.00 < 0.05)
                        thrpt:  [+116.88% +118.20% +119.26%]
                        Performance has improved.
Found 14 outliers among 100 measurements (14.00%)
  1 (1.00%) low mild
  2 (2.00%) high mild
  11 (11.00%) high severe
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000: Warming up for 3.0000 s

Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 6.2s, or reduce sample count to 80.
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000: Collecting 100 samples in estimated 6.2144 s (100 iterations)
Benchmarking segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000: Analyzing
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000
                        time:   [62.069 ms 62.162 ms 62.299 ms]
                        thrpt:  [321.03 Kelem/s 321.74 Kelem/s 322.22 Kelem/s]
                 change:
                        time:   [-55.681% -55.537% -55.397%] (p = 0.00 < 0.05)
                        thrpt:  [+124.20% +124.91% +125.64%]
                        Performance has improved.
Found 11 outliers among 100 measurements (11.00%)
  4 (4.00%) high mild
  7 (7.00%) high severe
2020-12-17 11:10:26 +00:00
Edd Robinson 0d60102c74 feat: make group keys comparable and results sortable
This commit provides functionality on top of the `GroupKey` type (a
vector of materialised values), which allows them to be comparable by
implementing `Ord`.

Then, using the `permutation` crate, it is possible sort all rows in a
result set based on the group keys, which will be useful for testing.
2020-12-17 11:10:26 +00:00
Edd Robinson 595d13956d test: benchmarks for general read_group case
This commit adds some initial benchmarks for the general read_group
approach using a hashing strategy. Benchmarks are as follows:

segment_read_group_all_time_vary_cardinality/cardinality_20_columns_2_rows_500000
                        time:   [23.335 ms 23.363 ms 23.397 ms]
                        thrpt:  [854.82  elem/s 856.07  elem/s 857.07
elem/s]
Found 8 outliers among 100 measurements (8.00%)
  4 (4.00%) high mild
  4 (4.00%) high severe
segment_read_group_all_time_vary_cardinality/cardinality_200_columns_2_rows_500000
                        time:   [34.266 ms 34.301 ms 34.346 ms]
                        thrpt:  [5.8231 Kelem/s 5.8307 Kelem/s 5.8367
Kelem/s]
Found 13 outliers among 100 measurements (13.00%)
  5 (5.00%) high mild
  8 (8.00%) high severe
segment_read_group_all_time_vary_cardinality/cardinality_2000_columns_2_rows_500000
                        time:   [48.788 ms 48.996 ms 49.238 ms]
                        thrpt:  [40.619 Kelem/s 40.820 Kelem/s 40.993
Kelem/s]
Found 11 outliers among 100 measurements (11.00%)
  3 (3.00%) high mild
  8 (8.00%) high severe
Benchmarking
segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000:
Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to
increase target time to 8.2s, or reduce sample count to 60.
segment_read_group_all_time_vary_cardinality/cardinality_20000_columns_3_rows_500000
                        time:   [80.133 ms 80.201 ms 80.287 ms]
                        thrpt:  [249.11 Kelem/s 249.37 Kelem/s 249.58
Kelem/s]
Found 3 outliers among 100 measurements (3.00%)
  1 (1.00%) high mild
  2 (2.00%) high severe

Benchmarking
segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000:
Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to
increase target time to 7.4s, or reduce sample count to 60.
segment_read_group_all_time_vary_columns/cardinality_20000_columns_2_rows_500000
                        time:   [73.692 ms 73.951 ms 74.245 ms]
                        thrpt:  [269.38 Kelem/s 270.45 Kelem/s 271.40
Kelem/s]
Found 13 outliers among 100 measurements (13.00%)
  13 (13.00%) high severe
Benchmarking
segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000:
Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to
increase target time to 8.1s, or reduce sample count to 60.
segment_read_group_all_time_vary_columns/cardinality_20000_columns_3_rows_500000
                        time:   [79.837 ms 79.934 ms 80.079 ms]
                        thrpt:  [249.75 Kelem/s 250.21 Kelem/s 250.51
Kelem/s]
Found 7 outliers among 100 measurements (7.00%)
  5 (5.00%) high mild
  2 (2.00%) high severe
Benchmarking
segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000:
Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to
increase target time to 9.7s, or reduce sample count to 50.
segment_read_group_all_time_vary_columns/cardinality_20000_columns_4_rows_500000
                        time:   [95.415 ms 95.549 ms 95.707 ms]
                        thrpt:  [208.97 Kelem/s 209.32 Kelem/s 209.61
Kelem/s]
Found 15 outliers among 100 measurements (15.00%)
  7 (7.00%) high mild
  8 (8.00%) high severe

segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_250000
                        time:   [38.897 ms 39.045 ms 39.227 ms]
                        thrpt:  [509.86 Kelem/s 512.22 Kelem/s 514.18
Kelem/s]
Found 13 outliers among 100 measurements (13.00%)
  4 (4.00%) high mild
  9 (9.00%) high severe
Benchmarking
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000:
Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to
increase target time to 7.2s, or reduce sample count to 60.
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_500000
                        time:   [71.965 ms 72.190 ms 72.445 ms]
                        thrpt:  [276.07 Kelem/s 277.04 Kelem/s 277.91
Kelem/s]
Found 21 outliers among 100 measurements (21.00%)
  4 (4.00%) low mild
  3 (3.00%) high mild
  14 (14.00%) high severe
Benchmarking
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000:
Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to
increase target time to 10.7s, or reduce sample count to 40.
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_750000
                        time:   [106.48 ms 106.58 ms 106.70 ms]
                        thrpt:  [187.43 Kelem/s 187.65 Kelem/s 187.82
Kelem/s]
Found 4 outliers among 100 measurements (4.00%)
  2 (2.00%) high mild
  2 (2.00%) high severe
Benchmarking
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000:
Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to
increase target time to 14.0s, or reduce sample count to 30.
segment_read_group_all_time_vary_rows/cardinality_20000_columns_2_rows_1000000
                        time:   [140.02 ms 140.14 ms 140.29 ms]
                        thrpt:  [142.57 Kelem/s 142.71 Kelem/s 142.84
Kelem/s]
Found 4 outliers among 100 measurements (4.00%)
  4 (4.00%) high severe

segment_read_group_pre_computed_groups_vary_cardinality/cardinality_2_columns_1_rows_500000
                        time:   [51.734 us 52.123 us 52.560 us]
                        thrpt:  [38.051 Kelem/s 38.371 Kelem/s 38.659
Kelem/s]
Found 18 outliers among 100 measurements (18.00%)
  3 (3.00%) high mild
  15 (15.00%) high severe
segment_read_group_pre_computed_groups_vary_cardinality/cardinality_20_columns_2_rows_500000
                        time:   [50.546 us 50.642 us 50.785 us]
                        thrpt:  [393.82 Kelem/s 394.93 Kelem/s 395.68
Kelem/s]
Found 8 outliers among 100 measurements (8.00%)
  3 (3.00%) low mild
  2 (2.00%) high mild
  3 (3.00%) high severe
segment_read_group_pre_computed_groups_vary_cardinality/cardinality_200_columns_2_rows_500000
                        time:   [267.47 us 270.23 us 273.10 us]
                        thrpt:  [732.33 Kelem/s 740.12 Kelem/s 747.75
Kelem/s]
segment_read_group_pre_computed_groups_vary_cardinality/cardinality_2000_columns_2_rows_500000
                        time:   [14.961 ms 15.033 ms 15.113 ms]
                        thrpt:  [132.33 Kelem/s 133.04 Kelem/s 133.68
Kelem/s]
Found 11 outliers among 100 measurements (11.00%)
  3 (3.00%) high mild
  8 (8.00%) high severe

segment_read_group_pre_computed_groups_vary_columns/cardinality_200_columns_1_rows_500000
                        time:   [84.825 us 84.938 us 85.083 us]
                        thrpt:  [2.3506 Melem/s 2.3546 Melem/s 2.3578
Melem/s]
Found 14 outliers among 100 measurements (14.00%)
  7 (7.00%) high mild
  7 (7.00%) high severe
segment_read_group_pre_computed_groups_vary_columns/cardinality_200_columns_2_rows_500000
                        time:   [258.81 us 259.33 us 260.05 us]
                        thrpt:  [769.08 Kelem/s 771.22 Kelem/s 772.77
Kelem/s]
Found 14 outliers among 100 measurements (14.00%)
  2 (2.00%) high mild
  12 (12.00%) high severe
Benchmarking
segment_read_group_pre_computed_groups_vary_columns/cardinality_200_columns_3_rows_500000:
Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to
increase target time to 6.1s, enable flat sampling, or reduce sample
count to 60.
segment_read_group_pre_computed_groups_vary_columns/cardinality_200_columns_3_rows_500000
                        time:   [1.1971 ms 1.2020 ms 1.2079 ms]
                        thrpt:  [165.58 Kelem/s 166.39 Kelem/s 167.07
Kelem/s]
Found 13 outliers among 100 measurements (13.00%)
  3 (3.00%) high mild
  10 (10.00%) high severe
segment_read_group_pre_computed_groups_vary_rows/cardinality_200_columns_2_rows_250000
                        time:   [252.42 us 252.58 us 252.75 us]
                        thrpt:  [791.31 Kelem/s 791.84 Kelem/s 792.32
Kelem/s]
Found 10 outliers among 100 measurements (10.00%)
  2 (2.00%) high mild
  8 (8.00%) high severe
segment_read_group_pre_computed_groups_vary_rows/cardinality_200_columns_2_rows_500000
                        time:   [271.68 us 272.46 us 273.59 us]
                        thrpt:  [731.01 Kelem/s 734.04 Kelem/s 736.15
Kelem/s]
Found 8 outliers among 100 measurements (8.00%)
  8 (8.00%) high severe
segment_read_group_pre_computed_groups_vary_rows/cardinality_200_columns_2_rows_750000
                        time:   [293.17 us 293.42 us 293.65 us]
                        thrpt:  [681.09 Kelem/s 681.63 Kelem/s 682.20
Kelem/s]
Found 9 outliers among 100 measurements (9.00%)
  1 (1.00%) low mild
  4 (4.00%) high mild
  4 (4.00%) high severe
segment_read_group_pre_computed_groups_vary_rows/cardinality_200_columns_2_rows_1000000
                        time:   [306.48 us 307.11 us 307.95 us]
                        thrpt:  [649.45 Kelem/s 651.22 Kelem/s 652.57
Kelem/s]
Found 5 outliers among 100 measurements (5.00%)
  3 (3.00%) high mild
  2 (2.00%) high severe
2020-12-17 11:10:26 +00:00
Edd Robinson 6c7debcd3f refactor: reorganise existing read_group benchmark 2020-12-17 11:10:26 +00:00
Edd Robinson 80bb925061 test: read_group test coverage 2020-12-17 11:10:26 +00:00
Edd Robinson 89c3162b5d feat: hash-based read_group aggregates 2020-12-17 11:10:26 +00:00
Edd Robinson cd7a5a78b1 refactor: clarify code-paths with todo 2020-12-17 11:10:26 +00:00
Michael Hall de435196ab
fix: Move Contributing text into separate document (#566)
Fixes #512
2020-12-16 16:06:58 -05:00
Carol (Nichols || Goulding) b11896b7e9
fix: Compiler errors missed in aws object store tests because CI wasn't checking them (#564) 2020-12-15 12:28:42 -05:00
Andrew Lamb 699504a022
feat: implement read_group for Sum, Count and Mean aggregates (#557)
* feat: Implement read_group for "normal" aggregates

* test: add tests
2020-12-15 09:35:00 -05:00