Skip to content

[Bug]: ClickBench Q10 is significantly slower in MatrixOne than DuckDB #27672

Description

@daviszhen

Parent issue

This is a sub-issue of #27665: significant gap in ClickBench query performance between MatrixOne and DuckDB.

Summary

ClickBench Q10 shows a significant MatrixOne performance gap against the DuckDB reference. The values below are elapsed seconds. Each result array is the three measurements emitted by the adapter: [run 1, run 2, run 3]; warm median is the median of the available run-2/run-3 values.

Query

SELECT RegionID, SUM(AdvEngineID), COUNT(*) AS c, AVG(ResolutionWidth), COUNT(DISTINCT UserID) FROM hits GROUP BY RegionID ORDER BY c DESC LIMIT 10;

Performance comparison

Engine Run 1 Run 2 Run 3 Warm median
MatrixOne 735.600 751.040 failed (null) 751.040
DuckDB 2.462 0.512 0.483 0.497
  • MatrixOne / DuckDB warm-median ratio: 1509.63x
  • Warm-median difference: 750.543 seconds
  • Raw MatrixOne timing array: [735.600, 751.040, null]
  • Raw DuckDB timing array: [2.462, 0.512, 0.483]

Environment and data

MatrixOne measurement:

  • Branch: main
  • Commit: 249a458ba567b26d1818fb0496b449135cb05ef2
  • Hardware: server 129
  • OS: CentOS
  • Dataset: ClickBench hits, 99,997,497 rows
  • MatrixOne raw output: /mnt/fastdata/ClickBench/matrixone/raw_results.md

DuckDB reference:

  • Result file: duckdb/results/20260511/c6a.metal.json
  • Machine label: c6a.metal
  • Result date: 2026-05-11

The two measurements were not collected on the same hardware. The DuckDB value is the latest local c6a.metal reference available; an apples-to-apples rerun on the same server is recommended before assigning a final performance regression magnitude.

Steps to reproduce

  1. Follow the reproduction steps in #27665, including the MatrixOne and DuckDB adapter READMEs:
  2. Use the same hits.tsv.gz dataset for both engines (the adapters support loading the gzip file directly).
  3. In the MatrixOne adapter, run ./benchmark.sh after setting MATRIXONE_HOME, MATRIXONE_DATA_FILE, MATRIXONE_HOST, MATRIXONE_PORT, MATRIXONE_USER, and MATRIXONE_PASSWORD as described in [Bug]: significant gap in clickbench query performance between matrixone and duckdb #27665.
  4. In the DuckDB adapter, run ./benchmark.sh after setting DUCKDB_BIN_PATH, DUCKDB_DB_PATH, and DUCKDB_DATA_PATH as described in the README.
  5. Compare the Q10 entry in queries.sql; run the query three times after loading the data and record elapsed time and whether the query completes successfully.

Notes

  • MatrixOne has one failed measurement (ERROR 2013 (HY000): Lost connection to MySQL server during query); the third value is shown as null.

Expected behavior

On comparable hardware with the same dataset, MatrixOne should not exhibit a large query-level performance gap for this workload. Please investigate the execution plan, operators, memory use, and any spill or connection/timeout behavior relevant to this query.

Metadata

Metadata

Assignees

Labels

kind/bugSomething isn't workingneeds-triageNeeds evaluation before prioritization. Not yet decided whether to proceed

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions