Skip to content

Release of DB Olympics #2

Open
Open

Description

@toschmidt

Hello,

We have been working on a new database benchmark meant for agentic workflows. The benchmark is inspired by ClickBench, but the queries are written by agents (Claude Sonnet) that try to answer business questions for a simulated e-commerce platform. The benchmark contains 409 queries targeting the SQL standard with common extensions. The dataset is scalable, and verified results from scale factor 1 to 1000 are available. The schema is based on the open-source Heron e-commerce schema (251 tables). The data generator, designed by Claude Opus, uses causal simulation, so skewness, correlations, and messy, incident-laden data arise as they do in a real business. By using agents, we have tried to reduce the impact of our own biases and produce a realistic workload.

Right now, we are running the evaluation locally for cost reasons, but the performance is comparable to c8a instances on AWS, so we price the runs according to the instance's on-demand prices (we do not consider data storage cost for now).

We want to announce this benchmark publicly in the first week of November. Before that, we wanted to notify you, and we'd deeply value any thoughts and suggestions you have to help improve this benchmark. We have done our best to ensure each system is measured accurately. If you would like to check your system's connectors, they are available at https://github.com/dbolympics/dbolympics/tree/main/systems. We want to make this comparison as fair as possible to everyone.

cedardb: @lukasvogel, @pfent, @ChrisWint
clickhouse: @alexey-milovidov, @rschu1ze
datafusion: @alamb
duckdb: @Mytherin, @hannes, @peterboncz
firebolt: @hall-alex, @moshap-firebolt, @wagjamin
gizmosql: @prmoore77
hyper: @vogelsgesang, @caetanosauer

In this benchmark, wrong results and errors are penalized. All systems except Postgres, Hyper, DuckDB, GizmoSQL, and ClickHouse_brew (ClickHouse + Umbra Query Optimizer) return wrong results for some queries. We allow simple query rewrites to support various dialects, but unfortunately, not everything can be covered. You can visit https://dbolympics.com/ for an overview of the results.

Some of the issues may, of course, be our errors. We are happy to work with you to merge in fixes before or after the announcement. We intend to keep the repo and website up for the foreseeable future, so there is no deadline for improvements.

Best
Altan, Tobias

Activity

  1. Mytherin commented on Oct 22, 2026

    @Mytherin

    Looks very interesting - I like the inclusion of cost which I think is very relevant.

    I wonder how you are thinking about adding systems to the benchmark? One issue I see with ClickBench is that a lot of systems have been getting added that are not relevant which dilutes the benchmark and creates confusion more than anything. For example, one of the systems at the top of ClickBench right now is a vibe-coded project that is itself stated as not being meant for production use. Especially in todays age of AI it seems risky to allow for this - it's trivial to fire up an AI to generate a "system" that performs well at a specific benchmark, especially if reliability or performance on general-purpose queries is of no concern.

    There's also the related issue of derivative systems - we've seen this a lot with both ClickHouse and DuckDB where a new system pops up that is wrapping one of the two. Since ClickHouse and DuckDB do well on the benchmark the derivative system also does well on the benchmark - but this can also of course lead to a bunch of systems flooding the list as anyone can just fork an existing system, slap a new name on it and submit a PR to add it to the benchmark. ClickBench has added labels for these (X derivative) but it seems to add noise more than anything else unless there is something fundamentally different about the system that impacts query performance for the benchmark.

  2. prmoore77 commented on Oct 22, 2026

    @prmoore77
    Contributor

    hi @toschmidt - I'm working on a submission for Hardcharger now! (Successor to GizmoSQL)...

  3. prmoore77 commented on Oct 22, 2026

    @prmoore77
    Contributor

    Done - please see: #4

  4. toschmidt commented on Oct 22, 2026

    @toschmidt
    ContributorAuthor

    I wonder how you are thinking about adding systems to the benchmark? One issue I see with ClickBench is that a lot of systems have been getting added that are not relevant which dilutes the benchmark and creates confusion more than anything. For example, one of the systems at the top of ClickBench right now is a vibe-coded project that is itself stated as not being meant for production use. Especially in todays age of AI it seems risky to allow for this - it's trivial to fire up an AI to generate a "system" that performs well at a specific benchmark, especially if reliability or performance on general-purpose queries is of no concern.

    That is a good point. We hope to avoid the problem for now by using a large query set with higher complexity than ClickBench and an evolving dataset. Of course, this might not be enough, and AI-generated systems could still be tuned for this benchmark. An alternative we discussed is to keep the query set secret and publish only query samples. We decided against this for now, since we want to publish Umbra results as well, and this might lead to conflicts if Altan or I have access to the queries. A secret query set also complicates submitting results for cloud offerings like Snowflake, Databricks, Redshift, ClickHouse, or MotherDuck. Another option is to regenerate the query set every 3 or 6 months, thereby discouraging tuning. @Mytherin, what is your take?

    There's also the related issue of derivative systems - we've seen this a lot with both ClickHouse and DuckDB where a new system pops up that is wrapping one of the two. Since ClickHouse and DuckDB do well on the benchmark the derivative system also does well on the benchmark - but this can also of course lead to a bunch of systems flooding the list as anyone can just fork an existing system, slap a new name on it and submit a PR to add it to the benchmark. ClickBench has added labels for these (X derivative) but it seems to add noise more than anything else unless there is something fundamentally different about the system that impacts query performance for the benchmark.

    Yeah, that is true. Personally, I would exclude systems that just change the system name without significant modifications. But we should establish a clear rule here, since we still want to include hard forks of existing systems (e.g., Firebolt, CedarDB). Also, should we include systems like pg_clickhouse and pg_duckdb? These are usually slower than DuckDB and ClickHouse on their own, but could be seen as derivations of PostgreSQL since they change its query engine. Similarly, clickhouse_brew combines Umbra's query optimizer with ClickHouse to provide Postgres compatibility.

    Would you consider Hardcharger/GizmoSQL as different enough from DuckDB? It seems like they run plain DuckDB internally, but have made some changes to it.

  5. tmuehlbauer commented on Oct 22, 2026

    @tmuehlbauer

    This looks very promising! The inclusion of QPS and cost are important dimensions. I also like that wrong results get penalized in scoring.

    Directionally I'd like to see some form of detection of intentional benchmark overfitting. I understand it's hard to quantify or detect but it is increasingly becoming a bigger issue with vibe coding. If you let a coding agent optimize it'll happily build things that break general applicability for a real productized database.

    Iceberg/Parquet will be a good addition. While arguably not the best format, it has basically become the new CSV. It's a good insight into how all the engines can handle the common sharing format used today.

  6. Mytherin commented on Oct 23, 2026

    @Mytherin

    That is a good point. We hope to avoid the problem for now by using a large query set with higher complexity than ClickBench and an evolving dataset. Of course, this might not be enough, and AI-generated systems could still be tuned for this benchmark. An alternative we discussed is to keep the query set secret and publish only query samples. We decided against this for now, since we want to publish Umbra results as well, and this might lead to conflicts if Altan or I have access to the queries. A secret query set also complicates submitting results for cloud offerings like Snowflake, Databricks, Redshift, ClickHouse, or MotherDuck. Another option is to regenerate the query set every 3 or 6 months, thereby discouraging tuning. @Mytherin, what is your take?

    Perhaps a good metric is to either (1) look at how relevant a system is in the real world (looking at e.g. github stars, db-engines ranking, etc), or (2) have the system prove that is general purpose enough by completing some sort of stress test successfully, e.g. successfully running some combination of TPC-H, TPC-DS, TPC-C, TPC-E, ClickBench, SQLStorm.

    Yeah, that is true. Personally, I would exclude systems that just change the system name without significant modifications. But we should establish a clear rule here, since we still want to include hard forks of existing systems (e.g., Firebolt, CedarDB). Also, should we include systems like pg_clickhouse and pg_duckdb? These are usually slower than DuckDB and ClickHouse on their own, but could be seen as derivations of PostgreSQL since they change its query engine. Similarly, clickhouse_brew combines Umbra's query optimizer with ClickHouse to provide Postgres compatibility.

    That's fair - it can definitely be interesting to include them, but maybe it would be stylistically better to hide these derivative engines by default to prevent clogging up the results too much to the point of unreadability.

  7. peterboncz commented on Oct 23, 2026

    @peterboncz
  8. toschmidt commented on Oct 23, 2026

    @toschmidt
    ContributorAuthor

    Okay, for now, we will hide systems that repackage existing systems. Hard forks of systems are allowed, but it should be clear how the fork differs from the original system (e.g., by replacing relevant parts of the engine or changing the data layout).

  9. prmoore77 commented on Oct 23, 2026

    @prmoore77
    Contributor

    please remove this gizmo db — it is just duckdb - no need to take this copycat/repackager seriously

    On 22 Oct 2026, at 13:43, Tobias Schmidt @.***> wrote:

    toschmidt created an issue (#2)

    Hello,

    We have been working on a new database benchmark meant for agentic workflows. The benchmark is inspired by ClickBench, but the queries are written by agents (Claude Sonnet) that try to answer business questions for a simulated e-commerce platform. The benchmark contains 409 queries targeting the SQL standard with common extensions. The dataset is scalable, and verified results from scale factor 1 to 1000 are available. The schema is based on the open-source Heron e-commerce schema (251 tables). The data generator, designed by Claude Opus, uses causal simulation, so skewness, correlations, and messy, incident-laden data arise as they do in a real business. By using agents, we have tried to reduce the impact of our own biases and produce a realistic workload.

    Right now, we are running the evaluation locally for cost reasons, but the performance is comparable to c8a instances on AWS, so we price the runs according to the instance's on-demand prices (we do not consider data storage cost for now).

    We want to announce this benchmark publicly in the first week of November. Before that, we wanted to notify you, and we'd deeply value any thoughts and suggestions you have to help improve this benchmark. We have done our best to ensure each system is measured accurately. If you would like to check your system's connectors, they are available at https://github.com/dbolympics/dbolympics/tree/main/systems. We want to make this comparison as fair as possible to everyone.

    cedardb: @lukasvogel, @pfent, @ChrisWint

    clickhouse: @alexey-milovidov, @rschu1ze

    datafusion: @alamb

    duckdb: @Mytherin, @hannes, @peterboncz

    firebolt: @hall-alex, @moshap-firebolt, @wagjamin

    gizmosql: @prmoore77

    hyper: @vogelsgesang, @caetanosauer

    In this benchmark, wrong results and errors are penalized. All systems except Postgres, Hyper, DuckDB, GizmoSQL, and ClickHouse_brew (ClickHouse + Umbra Query Optimizer) return wrong results for some queries. We allow simple query rewrites to support various dialects, but unfortunately, not everything can be covered. You can visit https://dbolympics.com/ for an overview of the results.

    Some of the issues may, of course, be our errors. We are happy to work with you to merge in fixes before or after the announcement. We intend to keep the repo and website up for the foreseeable future, so there is no deadline for improvements.

    Best

    Altan, Tobias

    —

    Reply to this email directly, view it on GitHub, or unsubscribe.

    Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS and Android. Download it today!

    You are receiving this because you were mentioned.Message ID: @.***>

    Not cool, bro

  10. hbirler commented on Oct 23, 2026

    @hbirler
    Contributor

    Hello,

    Thanks for all the comments! With this benchmark, we have multiple goals.

    Firstly, we want to reward the admirable work modern production systems have been doing in bringing performance improvements to everyone. DuckDB, Hyper, ClickHouse and similar systems have shown people orders of magnitude improvements in real world workloads are possible.

    Another goal is to discover the “speed of light.” Given a relatively nontrivial benchmark, what is the fastest possible way of running it?

    ClickBench has been incredible impactful in both. It showed how fast great production systems had become. And it also pushed everyone towards the speed of light. There have been many days we saw another system beating our system Umbra, and did day long discussions on how that could be possible and what generically useful techniques we could implement to achieve such performance. That experience was super rewarding.

    So I believe we should allow for derivative/frankenstein systems. But we can easily tag them as such and put them behind a selector. We might need some time to think about a good definition of derivative though, feel free to make suggestions.

  11. tmuehlbauer commented on Oct 23, 2026

    @tmuehlbauer

    More thoughts after skimming through the query set:

    1. I haven't seen queries that depend on costly functions, e.g. string, vector operations. Usage of those is real.
    2. Multi modality is the new norm. Agents are the new main users of databases and they need structured + graph + unstructured search from a single query. I'm convinced the world will move on from specialized systems towards integrated ones; relying on pre filtering and oversampling is just not viable to combine the different domains for governed and efficient query evaluation. The Olympics may need to expand into different disciplines including disciplines that stress multiple angles like biathlon or triathlon.
    3. Marketing scenarios make for a set of highly interesting queries that I don't really see reflected in the set yet. I can share segmentation, frequency capping, activation use cases with you that will stress engines in unique ways.
  12. caetanosauer commented on Oct 23, 2026

    @caetanosauer

    Thank you for this open effort and let's keep collaborating!

    I'd like to +1 @Mytherin 's comment:

    successfully running some combination of TPC-H, TPC-DS, TPC-C, TPC-E, ClickBench, SQLStorm.

    I think each system could be assigned a global score as a metric of how general-purpose it is. I think just SQLStorm would suffice for that since it is comprehensive enough and a lot of thought was put into that benchmark for exactly this purpose. I would even support calling it just the "SQLStorm score".

  13. alamb commented on Oct 23, 2026

    @alamb
    Contributor

    Thank you for this benchmark -- it is interesting and I am sure it will help us improve performance across the ecosystem

    I have one request: Could you please either

    1. Report numbers for each system when directly executing against parquet in addition to their proprietary format (my preference, and what ClickHouse does)
    2. Incorporate load time into the overall query results (or report it more prominently)

    My reasoning
    This benchmark appears to measure (and prominently report) query performance, and the scripts talk about "parquet" data so I assumed this chart was running against Parquet:

    Image

    But looking more carefully, it appears that DataFusion is the only system actually running against the parquet input files, while the others loads the files into a native format of some type and that load time is not accounted for in the headline performance chart.

    For example, I could spin this image as "DataFusion has 100x faster load time than the nearest other system" which doesn't seem like a useful conclusion to draw as it is benchmarking a different usecase (ad hoc queries on data lakes, for example)
    Image

  14. toschmidt commented on Oct 23, 2026

    @toschmidt
    ContributorAuthor

    Thank you for this benchmark -- it is interesting and I am sure it will help us improve performance across the ecosystem

    I have one request: Could you please either

    1. Report numbers for each system when directly executing against parquet in addition to their proprietary format (my preference, and what ClickHouse does)
    2. Incorporate load time into the overall query results (or report it more prominently)

    We are working on a comparison using Parquet as the primary storage format. We will release the results next week. Right now, systems like Firebolt, Datafusion, and ClickHouse are penalized for incorrect results or query failures (2x the execution time of the slowest system with a correct result).

  15. alamb commented on Oct 23, 2026

    @alamb
    Contributor

    We are working on a comparison using Parquet as the primary storage format. We will release the results next week.

    Thank you

    Right now, systems like Firebolt, Datafusion, and ClickHouse are penalized for incorrect results or query failures (2x the execution time of the slowest system with a correct result).

    I believe more that half of the reported wrong results for DataFusion are due to a dialect difference (this took my agent 5 minutes to find, BTW)

    I recommend at the minimum you do the same thing (have an agent tell you why the results are "wrong") for ClickHouse before publishing these results

    I am working on the other reported errors (which do indeed appear to be incorrect/inconsistent behavior in DataFusion FWIW)

  16. hbirler commented on Oct 23, 2026

    @hbirler
    Contributor

    @alamb most ClickHouse issues are due to correlated queries that they cannot execute and not supporting division on arbitrary numeric inputs. Unnesting is not a simple textual rewrite. And division requires semantic analysis to correctly determine cast targets (not really a generic rewrite or a simple issue of a function having a different name). We looked for something like a setting to allow arbitrary divisions but did not see anything (we already have various settings on in multiple databases to make them behave closer to the standard).

  17. hbirler commented on Oct 23, 2026

    @hbirler
    Contributor

    On the suggestions to use SQLStorm: It is practically impossible to determine correct results for SQLStorm queries. Those queries are generated by agents that were explicitly instructed to make queries complex. So they generated complex patterns that are not necessarily realistic (such as LIKE and IN expressions within join conditions), and various other constructs that are not supported by the SQL standard. Such a suite of queries is great for testing databases and algorithms such as unnesting to make sure they do not break, but hard to compare multiple databases on.

    The queries on DBOlympics are generated by agents that were instructed to keep to the standard. Regardless, many of the queries used either features not defined by the standard or things that the standard leaves implementation-defined. We had to rewrite a large amount of queries to bring them closer to the standard (or consensus), solve a bunch of issues with various dialects, and make sure all databases can return correct^1 results. We even have tried using the Umbra query parser and rewriter as a frontend for ClickHouse to prove their execution engine could run all queries. We still seem to have missed things though (see the pull requests for datafusion which we are looking into).

    1: On correctness, we know of no database that follows the standard when it comes to numerics. So we have allowed for noncompliant behavior when it comes to numerics (we just check whether the result is close enough).

  18. alamb commented on Oct 23, 2026

    @alamb
    Contributor

    1: On correctness, we know of no database that follows the standard when it comes to numerics.

    I think you will be disappointed if you expect the SQL standard to define semantics precisely. As you seem to have been re-discovering, the term "standard" is a misnomer for what "NCITS/ISO/IEC 9075-2:2011 [2012] -- (ISO/IEC 9075-2:2011, IDT)" is; Despite the name, it is many things, but it is not a precise technical standard followed by database management systems.

  19. caetanosauer commented on Oct 24, 2026

    @caetanosauer

    Just to clarify: I proposed SQLStorm as a tool to assess how general-purpose a system is, not its correctness. Some of those overfitted ClickBench contestants are likely to error, crash, or time out on a large share of SQLStorm queries, and a simple metric could capture that.

    Correctness is a whole can of worms as the discussion already reveals. In general, I do like the idea of admitting different results as long as they are reasonable (e.g., numeric ranges or rounding), as well as relying more on consensus than strict semantics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions