diff --git a/joins/challenges/default.json b/joins/challenges/default.json index d4ce4f0da..aa1039439 100644 --- a/joins/challenges/default.json +++ b/joins/challenges/default.json @@ -1,7 +1,7 @@ { "name": "esql", "description": "Performance benchmarks for internal R&D on query languages. This is work in progress", - "default": false, + "default": true, "schedule": [ { "operation": "delete-index", @@ -90,6 +90,20 @@ "warmup-iterations": 10, "iterations": 50 }, + { + "operation": "esql_lookup_join_1k_keys_keep_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_1k_keys_sort_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 5, + "iterations": 20 + }, { "operation": "esql_lookup_join_1k_keys_where_limit1000", "tags": ["lookup", "join", "limit1000"], @@ -101,8 +115,8 @@ "operation": "esql_lookup_join_1k_keys_where_no_match", "tags": ["lookup", "join"], "clients": 1, - "warmup-iterations": 10, - "iterations": 50 + "warmup-iterations": 5, + "iterations": 20 }, @@ -127,6 +141,20 @@ "warmup-iterations": 10, "iterations": 50 }, + { + "operation": "esql_lookup_join_100k_keys_keep_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_100k_keys_sort_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 5, + "iterations": 20 + }, { "operation": "esql_lookup_join_100k_keys_where_limit1000", "tags": ["lookup", "join", "limit1000"], @@ -138,8 +166,8 @@ "operation": "esql_lookup_join_100k_keys_where_no_match", "tags": ["lookup", "join"], "clients": 1, - "warmup-iterations": 10, - "iterations": 50 + "warmup-iterations": 5, + "iterations": 20 #} @@ -164,6 +192,20 @@ "warmup-iterations": 10, "iterations": 50 }, + { + "operation": "esql_lookup_join_200k_keys_keep_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_200k_keys_sort_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 5, + "iterations": 20 + }, { "operation": "esql_lookup_join_200k_keys_where_limit1000", "tags": ["lookup", "join", "limit1000"], @@ -175,8 +217,8 @@ "operation": "esql_lookup_join_200k_keys_where_no_match", "tags": ["lookup", "join"], "clients": 1, - "warmup-iterations": 10, - "iterations": 50 + "warmup-iterations": 5, + "iterations": 20 #} @@ -201,6 +243,20 @@ "warmup-iterations": 10, "iterations": 50 }, + { + "operation": "esql_lookup_join_500k_keys_keep_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_500k_keys_sort_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 5, + "iterations": 20 + }, { "operation": "esql_lookup_join_500k_keys_where_limit1000", "tags": ["lookup", "join", "limit1000"], @@ -212,8 +268,8 @@ "operation": "esql_lookup_join_500k_keys_where_no_match", "tags": ["lookup", "join"], "clients": 1, - "warmup-iterations": 10, - "iterations": 50 + "warmup-iterations": 5, + "iterations": 20 #} @@ -238,6 +294,20 @@ "warmup-iterations": 10, "iterations": 50 }, + { + "operation": "esql_lookup_join_1M_keys_keep_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_1M_keys_sort_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 5, + "iterations": 20 + }, { "operation": "esql_lookup_join_1M_keys_where_limit1000", "tags": ["lookup", "join", "limit1000"], @@ -249,8 +319,8 @@ "operation": "esql_lookup_join_1M_keys_where_no_match", "tags": ["lookup", "join"], "clients": 1, - "warmup-iterations": 10, - "iterations": 50 + "warmup-iterations": 5, + "iterations": 20 #} @@ -275,6 +345,20 @@ "warmup-iterations": 10, "iterations": 50 }, + { + "operation": "esql_lookup_join_5M_keys_keep_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_5M_keys_sort_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 5, + "iterations": 20 + }, { "operation": "esql_lookup_join_5M_keys_where_limit1000", "tags": ["lookup", "join", "limit1000"], @@ -286,8 +370,8 @@ "operation": "esql_lookup_join_5M_keys_where_no_match", "tags": ["lookup", "join"], "clients": 1, - "warmup-iterations": 10, - "iterations": 50 + "warmup-iterations": 5, + "iterations": 20 #} @@ -312,6 +396,20 @@ "warmup-iterations": 10, "iterations": 50 }, + { + "operation": "esql_lookup_join_100M_keys_keep_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_100M_keys_sort_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 5, + "iterations": 20 + }, { "operation": "esql_lookup_join_100M_keys_where_limit1000", "tags": ["lookup", "join", "limit1000"], @@ -323,8 +421,8 @@ "operation": "esql_lookup_join_100M_keys_where_no_match", "tags": ["lookup", "join"], "clients": 1, - "warmup-iterations": 10, - "iterations": 50 + "warmup-iterations": 5, + "iterations": 20 #} diff --git a/joins/challenges/small.json b/joins/challenges/small.json new file mode 100644 index 000000000..9a3ae56d9 --- /dev/null +++ b/joins/challenges/small.json @@ -0,0 +1,347 @@ + { + "name": "esql-small", + "description": "Performance benchmarks for internal R&D on query languages. Only running smaller indexes", + "default": false, + "schedule": [ + { + "operation": "delete-index", + "tags": ["setup"] + }, + { + "operation": { + "operation-type": "create-index", + "settings": {%- if index_settings is defined %} {{index_settings | tojson}} {%- else %} { + {# non-serverless-index-settings-marker-start #}{%- if build_flavor != "serverless" or serverless_operator == true -%} + {% if p_include_non_serverless_index_settings %} + "index.translog.flush_threshold_size": "4g", + {% endif %} + {%- endif -%}{# non-serverless-index-settings-marker-end #} + "index.codec": "best_compression", + "index.refresh_interval": "30s" + }{%- endif %} + }, + "tags": ["setup"] + }, + + { + "name": "check-cluster-health", + "operation": { + "operation-type": "cluster-health", + "index": "join_base_idx", + "request-params": { + "wait_for_status": "{{cluster_health | default('green')}}", + "wait_for_no_relocating_shards": "true" + }, + "retry-until-success": true + }, + "tags": ["setup"] + }, + + { + "operation": "index-base", + "clients": {{bulk_indexing_clients | default(8)}}, + "tags": ["setup"] + }, + { + "operation": "index-small-lookup-indices", + "clients": {{bulk_indexing_clients | default(8)}}, + "tags": ["setup"] + }, + { + "operation": "index-lookup-1m", + "clients": {{bulk_indexing_clients | default(8)}}, + "tags": ["setup"] + }, + { + "operation": "index-lookup-5m", + "clients": {{bulk_indexing_clients | default(8)}}, + "tags": ["setup"] + }, + { + "name": "refresh-after-index", + "operation": "refresh", + "tags": ["setup"] + }, + + + { + "operation": "esql_lookup_join_1k_keys_limit1", + "tags": ["lookup", "join", "limit1"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_1k_keys_limit1000", + "tags": ["lookup", "join", "limit1000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_1k_keys_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_1k_keys_keep_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_1k_keys_sort_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 5, + "iterations": 20 + }, + { + "operation": "esql_lookup_join_1k_keys_where_limit1000", + "tags": ["lookup", "join", "limit1000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_1k_keys_where_no_match", + "tags": ["lookup", "join"], + "clients": 1, + "warmup-iterations": 5, + "iterations": 20 + }, + + + { + "operation": "esql_lookup_join_100k_keys_limit1", + "tags": ["lookup", "join", "limit1"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_100k_keys_limit1000", + "tags": ["lookup", "join", "limit1000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_100k_keys_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_100k_keys_keep_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_100k_keys_where_limit1000", + "tags": ["lookup", "join", "limit1000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + {# + "operation": "esql_lookup_join_100k_keys_where_no_match", + "tags": ["lookup", "join"], + "clients": 1, + "warmup-iterations": 5, + "iterations": 20 + #} + + + { + "operation": "esql_lookup_join_200k_keys_limit1", + "tags": ["lookup", "join", "limit1"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_200k_keys_limit1000", + "tags": ["lookup", "join", "limit1000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_200k_keys_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_200k_keys_keep_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_200k_keys_where_limit1000", + "tags": ["lookup", "join", "limit1000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + {# + "operation": "esql_lookup_join_200k_keys_where_no_match", + "tags": ["lookup", "join"], + "clients": 1, + "warmup-iterations": 5, + "iterations": 20 + #} + + + { + "operation": "esql_lookup_join_500k_keys_limit1", + "tags": ["lookup", "join", "limit1"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_500k_keys_limit1000", + "tags": ["lookup", "join", "limit1000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_500k_keys_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_500k_keys_keep_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_500k_keys_where_limit1000", + "tags": ["lookup", "join", "limit1000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + {# + "operation": "esql_lookup_join_500k_keys_where_no_match", + "tags": ["lookup", "join"], + "clients": 1, + "warmup-iterations": 5, + "iterations": 20 + #} + + + { + "operation": "esql_lookup_join_1M_keys_limit1", + "tags": ["lookup", "join", "limit1"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_1M_keys_limit1000", + "tags": ["lookup", "join", "limit1000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_1M_keys_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_1M_keys_keep_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_1M_keys_where_limit1000", + "tags": ["lookup", "join", "limit1000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + {# + "operation": "esql_lookup_join_1M_keys_where_no_match", + "tags": ["lookup", "join"], + "clients": 1, + "warmup-iterations": 5, + "iterations": 20 + #} + + + { + "operation": "esql_lookup_join_5M_keys_limit1", + "tags": ["lookup", "join", "limit1"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_5M_keys_limit1000", + "tags": ["lookup", "join", "limit1000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_5M_keys_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_5M_keys_keep_limit10000", + "tags": ["lookup", "join", "limit10000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + { + "operation": "esql_lookup_join_5M_keys_where_limit1000", + "tags": ["lookup", "join", "limit1000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + }, + {# + "operation": "esql_lookup_join_5M_keys_where_no_match", + "tags": ["lookup", "join"], + "clients": 1, + "warmup-iterations": 5, + "iterations": 20 + #} + + { + "operation": "esql_lookup_join_1k_100k_200k_500k", + "tags": ["lookup", "join", "limit1000"], + "clients": 1, + "warmup-iterations": 10, + "iterations": 50 + } + + + ] + } diff --git a/joins/operations/default.json b/joins/operations/default.json index debf0530c..6b090272a 100644 --- a/joins/operations/default.json +++ b/joins/operations/default.json @@ -56,6 +56,16 @@ "operation-type": "esql", "query": "FROM join_base_idx | lookup join lookup_idx_1000_f10 on key_1000 | limit 10000" }, + { + "name": "esql_lookup_join_1k_keys_keep_limit10000", + "operation-type": "esql", + "query": "FROM join_base_idx | lookup join lookup_idx_1000_f10 on key_1000 | keep @timestamp, lookup_keyword_0 | limit 10000" + }, + { + "name": "esql_lookup_join_1k_keys_sort_limit10000", + "operation-type": "esql", + "query": "FROM join_base_idx | lookup join lookup_idx_1000_f10 on key_1000 | sort lookup_keyword_0 asc | limit 10000" + }, { "name": "esql_lookup_join_1k_keys_where_limit1000", "operation-type": "esql", @@ -83,6 +93,16 @@ "operation-type": "esql", "query": "FROM join_base_idx | lookup join lookup_idx_100000_f10 on key_100000 | limit 10000" }, + { + "name": "esql_lookup_join_100k_keys_keep_limit10000", + "operation-type": "esql", + "query": "FROM join_base_idx | lookup join lookup_idx_100000_f10 on key_100000 | keep @timestamp, lookup_keyword_0 | limit 10000" + }, + { + "name": "esql_lookup_join_100k_keys_sort_limit10000", + "operation-type": "esql", + "query": "FROM join_base_idx | lookup join lookup_idx_100000_f10 on key_100000 | sort lookup_keyword_0 asc | limit 10000" + }, { "name": "esql_lookup_join_100k_keys_where_limit1000", "operation-type": "esql", @@ -110,6 +130,16 @@ "operation-type": "esql", "query": "FROM join_base_idx | lookup join lookup_idx_200000_f10 on key_200000 | limit 10000" }, + { + "name": "esql_lookup_join_200k_keys_keep_limit10000", + "operation-type": "esql", + "query": "FROM join_base_idx | lookup join lookup_idx_200000_f10 on key_200000 | keep @timestamp, lookup_keyword_0 | limit 10000" + }, + { + "name": "esql_lookup_join_200k_keys_sort_limit10000", + "operation-type": "esql", + "query": "FROM join_base_idx | lookup join lookup_idx_200000_f10 on key_200000 | sort lookup_keyword_0 asc | limit 10000" + }, { "name": "esql_lookup_join_200k_keys_where_limit1000", "operation-type": "esql", @@ -137,6 +167,16 @@ "operation-type": "esql", "query": "FROM join_base_idx | lookup join lookup_idx_500000_f10 on key_500000 | limit 10000" }, + { + "name": "esql_lookup_join_500k_keys_keep_limit10000", + "operation-type": "esql", + "query": "FROM join_base_idx | lookup join lookup_idx_500000_f10 on key_500000 | keep @timestamp, lookup_keyword_0 | limit 10000" + }, + { + "name": "esql_lookup_join_500k_keys_sort_limit10000", + "operation-type": "esql", + "query": "FROM join_base_idx | lookup join lookup_idx_500000_f10 on key_500000 | sort lookup_keyword_0 asc | limit 10000" + }, { "name": "esql_lookup_join_500k_keys_where_limit1000", "operation-type": "esql", @@ -164,6 +204,16 @@ "operation-type": "esql", "query": "FROM join_base_idx | lookup join lookup_idx_1000000_f10 on key_1000000 | limit 10000" }, + { + "name": "esql_lookup_join_1M_keys_keep_limit10000", + "operation-type": "esql", + "query": "FROM join_base_idx | lookup join lookup_idx_1000000_f10 on key_1000000 | keep @timestamp, lookup_keyword_0 | limit 10000" + }, + { + "name": "esql_lookup_join_1M_keys_sort_limit10000", + "operation-type": "esql", + "query": "FROM join_base_idx | lookup join lookup_idx_1000000_f10 on key_1000000 | sort lookup_keyword_0 | limit 10000" + }, { "name": "esql_lookup_join_1M_keys_where_limit1000", "operation-type": "esql", @@ -191,6 +241,16 @@ "operation-type": "esql", "query": "FROM join_base_idx | lookup join lookup_idx_5000000_f10 on key_5000000 | limit 10000" }, + { + "name": "esql_lookup_join_5M_keys_keep_limit10000", + "operation-type": "esql", + "query": "FROM join_base_idx | lookup join lookup_idx_5000000_f10 on key_5000000 | keep @timestamp, lookup_keyword_0 | limit 10000" + }, + { + "name": "esql_lookup_join_5M_keys_sort_limit10000", + "operation-type": "esql", + "query": "FROM join_base_idx | lookup join lookup_idx_5000000_f10 on key_5000000 | sort lookup_keyword_0 | limit 10000" + }, { "name": "esql_lookup_join_5M_keys_where_limit1000", "operation-type": "esql", @@ -218,6 +278,16 @@ "operation-type": "esql", "query": "FROM join_base_idx | lookup join lookup_idx_100000000_f10 on key_100000000 | limit 10000" }, + { + "name": "esql_lookup_join_100M_keys_keep_limit10000", + "operation-type": "esql", + "query": "FROM join_base_idx | lookup join lookup_idx_100000000_f10 on key_100000000 | keep @timestamp, lookup_keyword_0 | limit 10000" + }, + { + "name": "esql_lookup_join_100M_keys_sort_limit10000", + "operation-type": "esql", + "query": "FROM join_base_idx | lookup join lookup_idx_100000000_f10 on key_100000000 | sort lookup_keyword_0 | limit 10000" + }, { "name": "esql_lookup_join_100M_keys_where_limit1000", "operation-type": "esql",