mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-02 12:32:04 +00:00
0d71bf1411
Now perf test changes/failures will have two rows, row for new and row for old server. I thought about uploading only the time of the test on the new server, but because not all perf tests uploaded, you cannot always get the time of the test without the changes (i.e. from run on the upstream/master repo/branch). <details> Before: ```sql SELECT concat(test, ' #', toString(query_index)), 'slower' AS test_status, 0 AS test_duration_ms, concat('https://s3.amazonaws.com/clickhouse-test-reports/$PR_TO_TEST/$SHA_TO_TEST/${CLICKHOUSE_PERFORMANCE_COMPARISON_CHECK_NAME_PREFIX}/report.html#changes-in-performance.', test, '.', toString(query_index)) AS report_url FROM queries WHERE (changed_fail != 0) AND (diff > 0) UNION ALL SELECT concat(test, ' #', toString(query_index)), 'unstable' AS test_status, 0 AS test_duration_ms, concat('https://s3.amazonaws.com/clickhouse-test-reports/$PR_TO_TEST/$SHA_TO_TEST/${CLICKHOUSE_PERFORMANCE_COMPARISON_CHECK_NAME_PREFIX}/report.html#unstable-queries.', test, '.', toString(query_index)) AS report_url FROM queries WHERE unstable_fail != 0 Query id: 49dfdc9a-f549-4499-9a1a-410e5053f6c1 ┌─concat(test, ' #', toString(query_index))─┬─test_status─┬─test_duration_ms─┬─report_url─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ hashed_array_dictionary #16 │ slower │ 0 │ https://s3.amazonaws.com/clickhouse-test-reports/$PR_TO_TEST/$SHA_TO_TEST/${CLICKHOUSE_PERFORMANCE_COMPARISON_CHECK_NAME_PREFIX}/report.html#changes-in-performance.hashed_array_dictionary.16 │ │ ngram_distance #2 │ slower │ 0 │ https://s3.amazonaws.com/clickhouse-test-reports/$PR_TO_TEST/$SHA_TO_TEST/${CLICKHOUSE_PERFORMANCE_COMPARISON_CHECK_NAME_PREFIX}/report.html#changes-in-performance.ngram_distance.2 │ │ ngram_distance #3 │ slower │ 0 │ https://s3.amazonaws.com/clickhouse-test-reports/$PR_TO_TEST/$SHA_TO_TEST/${CLICKHOUSE_PERFORMANCE_COMPARISON_CHECK_NAME_PREFIX}/report.html#changes-in-performance.ngram_distance.3 │ │ ngram_distance #4 │ slower │ 0 │ https://s3.amazonaws.com/clickhouse-test-reports/$PR_TO_TEST/$SHA_TO_TEST/${CLICKHOUSE_PERFORMANCE_COMPARISON_CHECK_NAME_PREFIX}/report.html#changes-in-performance.ngram_distance.4 │ └───────────────────────────────────────────┴─────────────┴──────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` After: ```sql SELECT concat(test, ' #', toString(query_index), '::', test_desc_.1) AS test_name, 'slower' AS test_status, test_desc_.2 AS test_duration_ms, concat('https://s3.amazonaws.com/clickhouse-test-reports/$PR_TO_TEST/$SHA_TO_TEST/${CLICKHOUSE_PERFORMANCE_COMPARISON_CHECK_NAME_PREFIX}/report.html#changes-in-performance.', test, '.', toString(query_index)) AS report_url FROM queries ARRAY JOIN map('old', left, 'new', right) AS test_desc_ WHERE (changed_fail != 0) AND (diff > 0) UNION ALL SELECT concat(test, ' #', toString(query_index), '::', test_desc_.1) AS test_name, 'unstable' AS test_status, test_desc_.2 AS test_duration_ms, concat('https://s3.amazonaws.com/clickhouse-test-reports/$PR_TO_TEST/$SHA_TO_TEST/${CLICKHOUSE_PERFORMANCE_COMPARISON_CHECK_NAME_PREFIX}/report.html#unstable-queries.', test, '.', toString(query_index)) AS report_url FROM queries ARRAY JOIN map('old', left, 'new', right) AS test_desc_ WHERE unstable_fail != 0 Query id: 20475bfd-754b-4159-aa16-7798f4720bf8 ┌─test_name────────────────────────┬─test_status─┬─test_duration_ms─┬─report_url─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ hashed_array_dictionary #16::old │ slower │ 0.2149 │ https://s3.amazonaws.com/clickhouse-test-reports/$PR_TO_TEST/$SHA_TO_TEST/${CLICKHOUSE_PERFORMANCE_COMPARISON_CHECK_NAME_PREFIX}/report.html#changes-in-performance.hashed_array_dictionary.16 │ │ hashed_array_dictionary #16::new │ slower │ 0.2519 │ https://s3.amazonaws.com/clickhouse-test-reports/$PR_TO_TEST/$SHA_TO_TEST/${CLICKHOUSE_PERFORMANCE_COMPARISON_CHECK_NAME_PREFIX}/report.html#changes-in-performance.hashed_array_dictionary.16 │ │ ngram_distance #2::old │ slower │ 0.3598 │ https://s3.amazonaws.com/clickhouse-test-reports/$PR_TO_TEST/$SHA_TO_TEST/${CLICKHOUSE_PERFORMANCE_COMPARISON_CHECK_NAME_PREFIX}/report.html#changes-in-performance.ngram_distance.2 │ │ ngram_distance #2::new │ slower │ 0.4425 │ https://s3.amazonaws.com/clickhouse-test-reports/$PR_TO_TEST/$SHA_TO_TEST/${CLICKHOUSE_PERFORMANCE_COMPARISON_CHECK_NAME_PREFIX}/report.html#changes-in-performance.ngram_distance.2 │ │ ngram_distance #3::old │ slower │ 0.3644 │ https://s3.amazonaws.com/clickhouse-test-reports/$PR_TO_TEST/$SHA_TO_TEST/${CLICKHOUSE_PERFORMANCE_COMPARISON_CHECK_NAME_PREFIX}/report.html#changes-in-performance.ngram_distance.3 │ │ ngram_distance #3::new │ slower │ 0.4716 │ https://s3.amazonaws.com/clickhouse-test-reports/$PR_TO_TEST/$SHA_TO_TEST/${CLICKHOUSE_PERFORMANCE_COMPARISON_CHECK_NAME_PREFIX}/report.html#changes-in-performance.ngram_distance.3 │ │ ngram_distance #4::old │ slower │ 0.3577 │ https://s3.amazonaws.com/clickhouse-test-reports/$PR_TO_TEST/$SHA_TO_TEST/${CLICKHOUSE_PERFORMANCE_COMPARISON_CHECK_NAME_PREFIX}/report.html#changes-in-performance.ngram_distance.4 │ │ ngram_distance #4::new │ slower │ 0.4577 │ https://s3.amazonaws.com/clickhouse-test-reports/$PR_TO_TEST/$SHA_TO_TEST/${CLICKHOUSE_PERFORMANCE_COMPARISON_CHECK_NAME_PREFIX}/report.html#changes-in-performance.ngram_distance.4 │ └──────────────────────────────────┴─────────────┴──────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` </details> Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com> |
||
---|---|---|
.. | ||
scripts | ||
agg_functions_min_max_any.xml | ||
aggregate_functions_of_group_by_keys.xml | ||
aggregate_with_serialized_method.xml | ||
aggregating_merge_tree_simple_aggregate_function_string.xml | ||
aggregating_merge_tree.xml | ||
aggregation_by_partitions.xml | ||
aggregation_external.xml | ||
aggregation_in_order_2.xml | ||
aggregation_in_order.xml | ||
aggregation_overflow.xml | ||
analyze_array_tuples.xml | ||
and_function.xml | ||
any_anyLast.xml | ||
arithmetic_operations_in_aggr_func.xml | ||
arithmetic.xml | ||
array_auc.xml | ||
array_element.xml | ||
array_fill.xml | ||
array_fold.xml | ||
array_index_low_cardinality_numbers.xml | ||
array_index_low_cardinality_strings.xml | ||
array_join.xml | ||
array_reduce.xml | ||
arrow_format.xml | ||
asof.xml | ||
async_remote_read.xml | ||
avg_weighted.xml | ||
avg.xml | ||
base64_hits.xml | ||
base64.xml | ||
basename.xml | ||
bigint_arithm.xml | ||
bit_operations_fixed_string_numbers.xml | ||
bit_operations_fixed_string.xml | ||
bitmap_array_element.xml | ||
bloom_filter_insert.xml | ||
bloom_filter_select.xml | ||
bounding_ratio.xml | ||
casts.xml | ||
cidr.xml | ||
classification.xml | ||
codec_none.xml | ||
codecs_float_insert.xml | ||
codecs_float_select.xml | ||
codecs_int_insert.xml | ||
codecs_int_select.xml | ||
collations.xml | ||
column_array_filter.xml | ||
column_array_replicate.xml | ||
ColumnMap.xml | ||
columns_hashing.xml | ||
complex_array_creation.xml | ||
concat_hits.xml | ||
conditional.xml | ||
consistent_hashes.xml | ||
constant_column_comparison.xml | ||
constant_column_search.xml | ||
count_from_formats.xml | ||
count.xml | ||
countDigits.xml | ||
countIf.xml | ||
countMatches.xml | ||
cpu_synthetic.xml | ||
cryptographic_hashes.xml | ||
date_parsing.xml | ||
date_time_64.xml | ||
date_time_long.xml | ||
date_time_short.xml | ||
datetime64_conversion.xml | ||
datetime_comparison.xml | ||
decimal_aggregates.xml | ||
decimal_casts.xml | ||
decimal_format.xml | ||
decimal_parse.xml | ||
destroy_aggregate_states.xml | ||
dict_join.xml | ||
direct_dictionary.xml | ||
distinct_combinator.xml | ||
distinct_in_order.xml | ||
distributed_aggregation_memory_efficient.xml | ||
distributed_aggregation.xml | ||
empty_string_deserialization.xml | ||
empty_string_serialization.xml | ||
encodeXMLComponent.xml | ||
encrypt_decrypt_empty_string.xml | ||
entropy.xml | ||
enum_in_set.xml | ||
explain_ast.xml | ||
extract.xml | ||
file_table_function.xml | ||
final_with_lonely_parts.xml | ||
fixed_string16.xml | ||
flat_dictionary.xml | ||
float_formatting.xml | ||
float_mod.xml | ||
float_parsing.xml | ||
format_date_time.xml | ||
format_readable.xml | ||
formats_columns_sampling.xml | ||
function_calculation_after_sorting_and_limit.xml | ||
functions_coding.xml | ||
functions_geo.xml | ||
functions_with_hash_tables.xml | ||
fuse_sumcount.xml | ||
fuzz_bits.xml | ||
general_purpose_hashes_on_UUID.xml | ||
general_purpose_hashes.xml | ||
generate_table_function.xml | ||
get_map_value.xml | ||
grace_hash_join.xml | ||
great_circle_dist.xml | ||
group_array_moving_sum.xml | ||
group_by_consecutive_keys.xml | ||
group_by_fixed_keys.xml | ||
group_by_sundy_li.xml | ||
groupby_onekey_nullable.xml | ||
h3.xml | ||
has_all.xml | ||
hash_table_sizes_stats_small.xml | ||
hash_table_sizes_stats.xml | ||
hashed_array_dictionary.xml | ||
hashed_dictionary_load_factor.xml | ||
hashed_dictionary_sharded.xml | ||
hashed_dictionary.xml | ||
hashjoin_with_large_output.xml | ||
hierarchical_dictionaries.xml | ||
if_array_num.xml | ||
if_array_string.xml | ||
if_string_const.xml | ||
if_string_hits.xml | ||
if_to_multiif.xml | ||
if_transform_strings_to_enum.xml | ||
if.xml | ||
information_value.xml | ||
injective_functions_inside_uniq.xml | ||
insert_parallel.xml | ||
insert_select_default_small_block.xml | ||
insert_sequential_and_background_merges.xml | ||
insert_values_with_expressions.xml | ||
inserts_arrays_lowcardinality.xml | ||
int_parsing.xml | ||
intDiv.xml | ||
ip_trie.xml | ||
IPv4.xml | ||
IPv6.xml | ||
jit_aggregate_functions.xml | ||
jit_large_requests.xml | ||
jit_small_requests.xml | ||
jit_sort.xml | ||
join_append_block.xml | ||
join_filter_pushdown.xml | ||
join_max_streams.xml | ||
join_used_flags.xml | ||
joins_in_memory.xml | ||
json_extract_rapidjson.xml | ||
json_extract_simdjson.xml | ||
json_type.xml | ||
least_greatest_hits.xml | ||
leftpad.xml | ||
lightweight_delete.xml | ||
line_as_string_parsing.xml | ||
linear_regression.xml | ||
local_replica.xml | ||
logical_functions_large.xml | ||
logical_functions_medium.xml | ||
logical_functions_small.xml | ||
lot_of_subcolumns.xml | ||
low_cardinality_argument.xml | ||
low_cardinality_from_json.xml | ||
low_cardinality_query.xml | ||
lower_upper_utf8.xml | ||
lz4_hits_columns.xml | ||
lz4.xml | ||
map_populate_series.xml | ||
map_update.xml | ||
materialized_view_parallel_insert.xml | ||
materialized_view_parallelize_output_from_storages.xml | ||
math.xml | ||
memory_bound_merging.xml | ||
memory_cache_friendliness.xml | ||
merge_table_streams.xml | ||
merge_tree_huge_pk.xml | ||
merge_tree_insert.xml | ||
merge_tree_many_partitions_2.xml | ||
merge_tree_many_partitions.xml | ||
merge_tree_simple_select.xml | ||
min_max_index.xml | ||
mingroupby-orderbylimit1.xml | ||
mmap_io.xml | ||
modulo.xml | ||
monotonous_order_by.xml | ||
ngram_distance.xml | ||
nlp.xml | ||
norm_distance_float.xml | ||
norm_distance.xml | ||
normalize_utf8.xml | ||
number_formatting_formats.xml | ||
optimize_sorting_for_input_stream.xml | ||
optimize_window_funnel.xml | ||
optimized_select_final_one_part.xml | ||
optimized_select_final.xml | ||
or_null_default.xml | ||
orc_filter_push_down.xml | ||
orc_tuple_field_prune.xml | ||
order_by_decimals.xml | ||
order_by_read_in_order.xml | ||
order_by_single_column.xml | ||
order_by_tuple.xml | ||
order_with_limit.xml | ||
parallel_final.xml | ||
parallel_index.xml | ||
parallel_insert.xml | ||
parallel_mv.xml | ||
parquet_filter.xml | ||
parquet_read.xml | ||
parse_engine_file.xml | ||
point_in_polygon_const.xml | ||
point_in_polygon.xml | ||
polymorphic_parts_l.xml | ||
polymorphic_parts_m.xml | ||
polymorphic_parts_s.xml | ||
position_empty_needle.xml | ||
pre_limit_no_sorting.xml | ||
prefetch_in_aggregation.xml | ||
prepare_hash_before_merge.xml | ||
prewhere_with_row_level_filter.xml | ||
prewhere.xml | ||
push_down_limit.xml | ||
quantile_merge.xml | ||
quantile.xml | ||
queries_over_aggregation.xml | ||
query_interpretation_join.xml | ||
rand.xml | ||
random_fixed_string.xml | ||
random_printable_ascii.xml | ||
random_string_utf8.xml | ||
random_string.xml | ||
range_hashed_dictionary.xml | ||
range.xml | ||
re2_regex_caching.xml | ||
read_from_comp_parts.xml | ||
read_hits_with_aio.xml | ||
read_in_order_many_parts.xml | ||
reading_from_file.xml | ||
README.md | ||
redundant_functions_in_order_by.xml | ||
reinterpret_as.xml | ||
removing_group_by_keys.xml | ||
rewrite_array_exists.xml | ||
rewrite_sumIf.xml | ||
right.xml | ||
round_down.xml | ||
round_methods.xml | ||
scalar2.xml | ||
scalar.xml | ||
schema_inference_text_formats.xml | ||
select_format.xml | ||
sequence_match.xml | ||
set_disable_skip_index.xml | ||
set_hits.xml | ||
set_index.xml | ||
set.xml | ||
short_circuit_functions.xml | ||
simple_join_query.xml | ||
single_fixed_string_groupby.xml | ||
slices_hits.xml | ||
sort_patterns.xml | ||
sort_radix_trivial.xml | ||
sort.xml | ||
sparse_column.xml | ||
split_filter.xml | ||
storage_join_direct_join.xml | ||
string_join.xml | ||
string_set.xml | ||
string_sort.xml | ||
string_to_int.xml | ||
subqueries.xml | ||
sum_map.xml | ||
sum.xml | ||
sumIf.xml | ||
synthetic_hardware_benchmark.xml | ||
trim_numbers.xml | ||
trim_urls.xml | ||
trim_whitespace.xml | ||
tsv_csv_nullable_parsing.xml | ||
unary_arithmetic_functions.xml | ||
unary_logical_functions.xml | ||
uniq_stored.xml | ||
uniq_to_count.xml | ||
uniq_without_key.xml | ||
uniq.xml | ||
uniqExactIf.xml | ||
url_hits.xml | ||
vectorize_aggregation_combinators.xml | ||
views_max_insert_threads.xml | ||
visit_param_extract_raw.xml | ||
website.xml | ||
window_functions_downstream_multithreading.xml | ||
window_functions.xml | ||
writing_valid_utf8.xml |
ClickHouse performance tests
This directory contains .xml
-files with performance tests for @akuzm tool.
How to write performance test
First of all you should check existing tests don't cover your case. If there are no such tests then you should write your own.
You can use substitions
, create
, fill
and drop
queries to prepare test. You can find examples in this folder.
If your test takes more than 10 minutes, please, add tag long
to have an opportunity to run all tests and skip long ones.
How to run performance test
TODO @akuzm
How to validate single test
pip3 install clickhouse_driver scipy
../../tests/performance/scripts/perf.py --runs 1 insert_parallel.xml