ClickBench
How fast analytical databases run 43 SQL queries over one 100-million-row table of web analytics events, on the same cloud machines.
What it runs
Every entry loads the same table, hits: 99,997,497 rows and 105 columns of anonymised pageview events taken from the traffic of a large web analytics platform. The data is published as CSV, TSV, JSON lines and Parquet (one 14.8 GB file, or the same data split into 100 files for engines that read files in place). Then 43 SQL queries run one after another: counts, GROUP BY with top-N, distinct counts, LIKE and regex matching on URLs and search phrases, and filters on dates and counters. The queries stay close to standard SQL so most systems can run them unchanged.
Each system has a directory in the repository with scripts to install it, start it, load the data and run the queries on a fresh VM. Every query runs three times. The first run is the cold run: the database is restarted and the OS page cache dropped before it. The faster of the second and third runs is the hot run. The scripts also record load time and data size on disk, and the result goes into a JSON file named after the machine and the date of the run.
The dashboard turns these timings into a relative score. For each query it finds the fastest entry and divides every other entry’s time by it, after adding 10 ms to both so near-zero times don’t dominate. A query that failed counts as twice the entry’s slowest time, or at least 600 seconds. The geometric mean of the 43 ratios is the score: 1.0 would mean fastest on every query. The default “Combined” view weights load time 10%, data size 10%, cold runs 20% and hot runs 60%.
Setup
- Dataset
- One flat table,
hits: 99,997,497 rows, 105 columns, 14.8 GB as Parquet - Queries
- 43 SQL queries, run one at a time, three runs each
- Metrics
- Cold run, hot run, load time, data size, and a weighted “Combined” score (the default)
- Score
- Geometric mean of each query’s time relative to the fastest entry on that query
- Default hardware
- AWS c6a.4xlarge (16 vCPU, 32 GiB) with a 500 GB gp2 disk
- Other machines
- c6a.large to c6a.metal, c7a.metal-48xl, Graviton c8g.4xlarge and c8g.metal-48xl, t3a.small; managed services on their own sizes
- Who submits results
- Anyone, by pull request; the ClickHouse team reruns the automated entries across machines
- Entries
- 182 directories with published results (October 2026); many are variants of one system, such as Parquet, partitioned or tuned setups
What the numbers don’t tell you
- ClickHouse Inc. runs it, and ClickHouse is one of the entrants. The benchmark began in 2013 as the test that led its authors to choose ClickHouse for production, and the data shape (one wide, denormalised table of events) is the workload ClickHouse was built for. The team says it never tuned ClickHouse for these queries, but it chose the data, the queries and the scoring.
- There are no joins. The README itself says classical warehouses built around star or snowflake schemas may be at a disadvantage. Tiger Data built RTABench, with a normalised schema and selective queries, on ClickBench’s scripts for exactly this reason.
- 100 million rows is small by the README’s own words: the whole table fits in RAM on many single machines, and most results are single-node. It tells you little about multi-terabyte data, clusters or many users at once: queries run one at a time, and the concurrent-load test added in 2026 isn’t shown in the score.
- Defaults are expected, but tuning is allowed if the entry is labelled (for example
pinot-tuned) and shown separately; pre-aggregated tables, projections and materialized views are out of competition, and extra indexes are discouraged. Engines also improve against the benchmark over time: the README lists issues and fixes in DuckDB, TimescaleDB, Databend, QuestDB and others that came out of ClickBench runs, and Databend says it runs ClickBench in its CI. - Cold runs aren’t equal. Managed services such as ClickHouse Cloud, Databricks, MotherDuck and Hologres clear nothing before the first run and are tagged
no-cold. Their hardware also differs from the c6a.4xlarge, so compare only entries on the same machine. - Vendors and projects quote their rank in announcements, such as Databend’s 2023 post and DataFusion’s 2024 claim to be the fastest single-node engine for Parquet. The README allows such scoreboards but doesn’t encourage them, and a rank changes with the machine, metric and filters picked.
- Some licences forbid publishing results. Vertica, kdb (KDB-X Community Edition), DolphinDB and Deepgreen have scripts in the repository but no published numbers.
Systems it covers that have a page here
Amazon AthenaAWSAWS’s serverless SQL engine for data in S3: no cluster to run, and on-demand queries cost $5 per TB scanned.
CedarDBCommercialA PostgreSQL-compatible database rebuilt from scratch at TU Munich, running transactions and analytics on one copy of the data on a single server.
GizmoSQLOpen sourceA database server that wraps DuckDB (or SQLite) and serves it to many clients over Arrow Flight SQL, with TLS and authentication.
MotherDuckCommercialA serverless cloud data warehouse built on DuckDB, where one query can run partly on your laptop and partly in the cloud.
PivotOpen sourceA young open-source analytics server in Rust that speaks the PostgreSQL protocol and queries Iceberg and Delta Lake tables straight from object storage.
QuestDBOpen sourceA columnar time-series database in Java, C++ and Rust that ingests millions of rows a second and answers time-series SQL, with old partitions kept as Parquet.
ScramDBCommercialA brand-new, closed-source database that speaks the PostgreSQL protocol and promises transactions, analytics and vector search on one copy of the data; first builds shipped in summer 2026.
TDengineOpen sourceA clustered time-series database for IoT and industrial data that gives every device its own table, grouped under “supertables” with tags.
TinybirdCommercialA hosted ClickHouse platform that turns SQL queries into authenticated REST API endpoints, for analytics inside your product.In depth
How to read the dashboard#
Pick one machine, one metric and the entries that match how you would run the system. The bar is a ratio to the best result, not a time.
| Setting | What it shows | Watch for |
|---|---|---|
| Hot run | Best of the second and third run of each query, with data in caches | Closest to a dashboard querying warm data; systems that keep everything in memory look best here |
| Cold run | First run, after a restart and a dropped page cache | Entries tagged no-cold only dropped the OS cache, or nothing; in-memory systems are left out of this view and of Combined |
| Load time | Seconds to load the dataset | Zero for stateless engines that query the Parquet files where they are |
| Data size | Bytes on disk, including indexes and logs | Can’t be measured for in-memory systems |
| Combined | Weighted mix: load 10%, size 10%, cold 20%, hot 60% | The default since September 2025; pick a single metric if you care about one |
| ×1.00, ×2.00, … | Geometric mean of per-query ratios to the fastest entry | A failed query costs twice the entry’s slowest time (at least 600 s), which drags the score down hard |
| Filters | Machine, open source or not, tuned or not, CPU or GPU, and storage kind (native, cloud, memory, Parquet, data lake, web) | Deselect the queries that don’t match your workload; the dashboard recomputes the score |
- Each result file carries its run date; old entries (Druid’s is from July 2022) may not reflect current versions.
Sources · facts checked 2026-10-06
- ClickBench README: dataset, queries, rules, caching, scoring, history
- ClickBench changelog: cold-run rules, Combined default, no-cold tag, storage filter
- ClickBench LICENSE (CC BY-NC-SA 4.0)
- ClickBench results dashboard
- ClickBench: `hits` table definition (PostgreSQL entry)
- ClickBench: the 43 queries (PostgreSQL entry)
- ClickHouse datasets: hits.parquet (14.8 GB)
- AWS: Amazon EC2 C6a instances (c6a.4xlarge specs)
- Databend: Databend Excels on ClickBench (Mar 2023)
- Apache DataFusion: now the fastest single node engine for querying Apache Parquet files (Nov 2024)
- JSONBench repository
- ClickBench hardware benchmark
- ClickBench versions benchmark
- ClickBench Playground
- RTABench repository (Tiger Data)
- Tiger Data: Not All Analytics Are Equal (RTABench announcement)