Oliver beats ClickHouse.
Across 244 query shapes on identical servers, Oliver was 3.06 times faster than ClickHouse at the median, and it ran all of them in less time than ClickHouse took to load the data.
The setup
ClickHouse is the database we measure ourselves against, because it is very good at exactly this job.
Each engine ran on its own bare-metal server on AWS, pinned to 8 cores and 28 GB of memory. Both loaded the same 50 million rows from one generator over the same JSON wire. We ran ClickHouse 26.3 on its default settings against the Oliver release that was in production that day.
Before timing anything, we checked that both engines held exactly the same 50,000,003 rows.
Total time for all 244 queries
Adding up the time each engine spent on every query gives one total per engine.
Oliver needed less than half the time. Loading the 50 million rows took ClickHouse 50 seconds, which is longer than Oliver spent answering everything.
Oliver won every query family
The battery covers what dashboards and agents actually ask: filters, group-bys, per-minute time series, high-cardinality keys, roll-ups across five dimensions, distinct counts, percentiles and JSON attributes. We grouped the 244 shapes into 13 families. Oliver takes all 13 on the median.
How the wins are spread
Here is how many of the 244 shapes reached each level of speed-up.
169 shapes, more than two thirds of the battery, ran at least twice as fast, and 29 of them ran more than ten times as fast.
The 290× query
The biggest win came from the most ordinary question in analytics: how many events did one user generate?
SELECT count(*) FROM t WHERE user_id = 'u123'
ClickHouse answered in 26 milliseconds, which is respectable. Oliver answered in 0.09 milliseconds. The answer was somewhere in 50 million rows, and Oliver read 502 of them to find it.
Product dashboards ask this question thousands of times a day, one user at a time. At that speed, Oliver can answer it for 290 different users in the time ClickHouse takes to answer it once.
Getting data in
Fast queries over data you can't load quickly are an expensive hobby, so we timed ingest too: the same generator, the same wire, the same 50 million rows.
We ran it four times
We have run this benchmark four times in three weeks, against four different builds of the engine, on the same bare-metal setup each time.
The median has stayed between 2.84× and 3.06× in every run.
Why Oliver is faster
Most of the gap comes from reading less data. Oliver keeps compact summaries of what each part of the data contains, so a question about one user goes straight to the few places that user appears, which is where the 290× comes from.
Oliver also keeps the shapes dashboards draw most often pre-computed alongside the data. Per-minute counts by status answered in about 6 milliseconds, where ClickHouse took around a quarter of a second.
A query also reaches Oliver as a program instead of a string, so the engine plans filters, time buckets and aggregates together and computes them in the same pass that reads the data. The engine page goes into more detail.
Run it on your own data
The engine in this benchmark is the same one that runs OliverDB Cloud. Start a dedicated or serverless instance at aws.olivercloud.ai, send it your data as JSON, and run the SQL you run on ClickHouse today.
If the data has to stay inside your own cloud account, the same engine runs there too, and we help with the deployment. Get in touch and we will set it up with you.
Building something with an AI agent instead? The free tier gives you a key in about a minute.