From b8887b9c75c6d7555fe5ac9b4b3daf1dfe140f30 Mon Sep 17 00:00:00 2001 From: discord9 <55937128+discord9@users.noreply.github.com> Date: Mon, 28 Sep 2026 19:29:43 +0800 Subject: [PATCH] perf(index): add Bloom empty-row-group CI case Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com> --- .../opt06_bloom_empty_groups/case.toml | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 tests/perf/query_cases/opt06_bloom_empty_groups/case.toml diff --git a/tests/perf/query_cases/opt06_bloom_empty_groups/case.toml b/tests/perf/query_cases/opt06_bloom_empty_groups/case.toml new file mode 100644 index 00000000000..a767cb3ae6d --- /dev/null +++ b/tests/perf/query_cases/opt06_bloom_empty_groups/case.toml @@ -0,0 +1,77 @@ +[case] +name = "opt06_bloom_empty_groups" +description = "A/B Bloom empty-row-group short-circuit over flushed indexed Prometheus metric SSTs" + +[scenario] +kind = "prom_remote_write_then_query" + +[scenario.remote_write] +database = "public" +metric = "opt06_bloom_empty_groups" +physical_table = "opt06_bloom_empty_groups_physical" +series_count = 2048 +samples_per_series = 1024 +sample_chunk_size = 256 +flush_every_sample_chunks = 1 +start_unix_millis = 1704067200000 +step_millis = 60000 +chunk_series_count = 256 +timeout_seconds = 600 +visibility_timeout_seconds = 300 +base_setup_sql = [ + "CREATE TABLE opt06_bloom_empty_groups_physical (greptime_timestamp TIMESTAMP TIME INDEX, greptime_value DOUBLE) ENGINE=metric WITH ('physical_metric_table'='', 'index.type'='skipping', 'index.granularity'='128', 'index.false_positive_rate'='0.001', 'compaction.twcs.trigger_file_num'='100')", +] +candidate_setup_sql = [ + "CREATE TABLE opt06_bloom_empty_groups_physical (greptime_timestamp TIMESTAMP TIME INDEX, greptime_value DOUBLE) ENGINE=metric WITH ('physical_metric_table'='', 'index.type'='skipping', 'index.granularity'='128', 'index.false_positive_rate'='0.001', 'compaction.twcs.trigger_file_num'='100')", +] + +[scenario.remote_write.value] +pattern = "unique" +base = 0 +step = 1 + +[scenario.remote_write.prom_store] +pending_rows_flush_interval = "1s" +max_batch_rows = 100000 + +[[scenario.queries]] +name = "positive_host_then_instance" +kind = "sql" +query = "SELECT count(*) FROM opt06_bloom_empty_groups WHERE host = 'host0001' AND instance = 'instance000001'" +warmup = 3 +iterations = 18 + +[[scenario.queries]] +name = "missing_host_then_present_instance" +kind = "sql" +query = "SELECT count(*) FROM opt06_bloom_empty_groups WHERE host = 'host9999' AND instance = 'instance000001'" +warmup = 3 +iterations = 18 + +[[scenario.queries]] +name = "explain_positive_host_then_instance" +kind = "sql" +query = "EXPLAIN ANALYZE VERBOSE SELECT count(*) FROM opt06_bloom_empty_groups WHERE host = 'host0001' AND instance = 'instance000001'" +warmup = 0 +iterations = 1 + +[[scenario.queries]] +name = "explain_missing_host_then_present_instance" +kind = "sql" +query = "EXPLAIN ANALYZE VERBOSE SELECT count(*) FROM opt06_bloom_empty_groups WHERE host = 'host9999' AND instance = 'instance000001'" +warmup = 0 +iterations = 1 + +[[scenario.queries]] +name = "single_absent_host_control" +kind = "sql" +query = "EXPLAIN ANALYZE VERBOSE SELECT count(*) FROM opt06_bloom_empty_groups WHERE host = 'host9999'" +warmup = 0 +iterations = 1 + +[[scenario.queries]] +name = "count_all_rows" +kind = "sql" +query = "SELECT count(*) FROM opt06_bloom_empty_groups" +warmup = 0 +iterations = 1