InfluxDB 3 Core Benchmarks: QuestDB Comparison
This article presents benchmark results for InfluxDB 3 Core compared to QuestDB 9.2.2. InfluxDB 3 Core, which reached general availability in April 2025, is a complete rewrite of InfluxDB using Apache Arrow and DataFusion.
Key results: QuestDB ingests data 12x to 36x faster than InfluxDB 3 Core (up to 11.4M rows/sec vs 320K rows/sec), and runs analytical queries 17x to 418x faster depending on query type. InfluxDB 3 Core shows consistent ~320K rows/sec ingestion regardless of cardinality.
For InfluxDB v1/v2 benchmarks and detailed architecture comparison, see QuestDB vs InfluxDB.
About InfluxDB 3 Core
InfluxDB 3 Core represents a major architectural shift for InfluxDB:
- Complete rewrite in Rust (previously Go)
- Apache Arrow for in-memory data representation
- DataFusion query engine (Apache Arrow's SQL query engine)
- Parquet for storage format
- Arrow Flight for query protocol (gRPC-based)
This is a fundamentally different database from InfluxDB v1 and v2. The new architecture aims to improve analytical query performance through columnar processing.
Performance benchmarks
We use the open-source, industry-standard Time Series Benchmark Suite (TSBS) for all benchmarks. We extended the InfluxDB query runner to support v3 via Arrow Flight using the official influxdb3-go client library.
Hardware: AWS EC2 r8a.8xlarge (32 vCPU, 256 GB RAM, AMD EPYC), GP3 EBS storage (20,000 IOPS, 1 GB/s throughput)
Software:
- Ubuntu 22.04
- InfluxDB 3 Core (
quay.io/influxdb/influxdb3-core:latestas of December 2025) - QuestDB 9.2.2
Ingestion benchmark
We test a cpu-only scenario with two days of CPU data for various numbers of simulated hosts (100 to 1M). This tests how each database handles increasing data volumes and cardinality.
Example commands:
$ ./tsbs_generate_data --use-case="cpu-only" --seed=123 --scale=4000 \--timestamp-start="2016-01-01T00:00:00Z" \--timestamp-end="2016-01-03T00:00:00Z" \--log-interval="10s" --format="influx" > /tmp/influx_data$ ./tsbs_load_influx --db-name=benchmark --file=/tmp/influx_data \--urls=http://localhost:8181 --workers=32
The results for ingestion with 32 workers:
↑ Higher is better
| Scale | InfluxDB 3 Core | QuestDB | QuestDB Advantage |
|---|---|---|---|
| 100 hosts | 323K rows/sec | 4.02M rows/sec | 12x faster |
| 1,000 hosts | 320K rows/sec | 7.48M rows/sec | 23x faster |
| 4,000 hosts | 320K rows/sec | 8.39M rows/sec | 26x faster |
| 100,000 hosts | 320K rows/sec | 11.36M rows/sec | 36x faster |
| 1,000,000 hosts | 320K rows/sec | 7.33M rows/sec | 23x faster |
Key observations:
- InfluxDB 3 Core shows constant ~320K rows/sec regardless of cardinality (100 to 1M hosts)
- QuestDB scales from 4M to 11.4M rows/sec, peaking at 100K hosts
- QuestDB is 12x to 36x faster than InfluxDB 3 Core on ingestion
Query performance
We tested standard TSBS query types against both databases. All queries run with a single worker to measure per-query latency.
Dataset: cpu-only scenario, 4,000 hosts, 10-second intervals, 2 days of data (~69M rows)
As part of the standard TSBS benchmark, we test several types of popular time series queries:
- single-groupby: Aggregate CPU metrics for random hosts over specified time ranges
- double-groupby: Aggregate across ALL hosts, grouped by host and time intervals
- high-cpu-all: Full table scan finding hosts with CPU utilization above threshold
To run the benchmark:
$ ./tsbs_generate_queries --use-case="devops" --seed=123 --scale=4000 \--timestamp-start="2016-01-01T00:00:00Z" \--timestamp-end="2016-01-03T00:00:00Z" \--queries=1000 --query-type="single-groupby-1-1-1" \--format="influx" > /tmp/influx_query$ ./tsbs_run_queries_influx --file=/tmp/influx_query \--db-name=benchmark --workers=1
Single-groupby queries
↓ Lower is better
Query format: metrics-hosts-hours
| Query | InfluxDB 3 Core | QuestDB | Comparison |
|---|---|---|---|
| single-groupby-1-1-1 | 58.70 ms | 1.06 ms | QuestDB 55x faster |
| single-groupby-1-1-12 | 701.51 ms | 1.68 ms | QuestDB 418x faster |
| single-groupby-1-8-1 | 60.99 ms | 1.39 ms | QuestDB 44x faster |
| single-groupby-5-1-1 | 64.44 ms | 0.99 ms | QuestDB 65x faster |
| single-groupby-5-1-12 | 742.97 ms | 1.98 ms | QuestDB 375x faster |
| single-groupby-5-8-1 | 66.21 ms | 1.54 ms | QuestDB 43x faster |
Query naming: single-groupby-{metrics}-{hosts}-{hours} (e.g., 5-1-12 = 5 metrics, 1 host, 12-hour range)
Double-groupby queries
↓ Lower is better
Aggregates across ALL hosts, grouped by host and 1-hour intervals
| Query | InfluxDB 3 Core | QuestDB | Comparison |
|---|---|---|---|
| double-groupby-1 | 1,397.71 ms | 40.00 ms | QuestDB 35x faster |
| double-groupby-5 | 1,509.05 ms | 46.00 ms | QuestDB 33x faster |
| double-groupby-all | 1,625.68 ms | 58.00 ms | QuestDB 28x faster |
Heavy queries
high-cpu-all query latency · ↓ Lower is better
Full table scan finding hosts with CPU utilization above threshold
| Query | InfluxDB 3 Core | QuestDB | Comparison |
|---|---|---|---|
| high-cpu-all | 16,894.90 ms | 994.00 ms | QuestDB 17x faster |
Explaining performance differences
InfluxDB 3 Core observations
Ingestion: The consistent ~320K rows/sec throughput across all cardinality levels suggests the bottleneck is not related to series management (unlike v1/v2) but rather in the write path itself—possibly WAL handling, Parquet encoding, or HTTP request processing.
Queries: Results show consistent ~55-65 ms latency for simple 1-hour queries regardless of the number of metrics or hosts queried. This suggests a fixed per-query overhead, possibly from:
- Arrow Flight connection/protocol overhead
- DataFusion query planning
- Optimization opportunities in the new architecture
Longer time ranges (12-hour queries) scale linearly with data volume, reaching ~700-740 ms. The heavy analytical query (high-cpu-all) takes ~17 seconds.
Comparison with InfluxDB v1/v2
Interestingly, InfluxDB 3 Core shows slower performance than InfluxDB v1 and v2 on most workloads:
| Metric | InfluxDB v1 | InfluxDB v2 | InfluxDB 3 Core |
|---|---|---|---|
| Ingestion (4K hosts) | 787K rows/sec | 514K rows/sec | 320K rows/sec |
| single-groupby-1-1-1 | 0.42 ms | 0.73 ms | 58.70 ms |
| double-groupby-1 | 853 ms | 935 ms | 1,397.71 ms |
| high-cpu-all | 16,045 ms | 16,655 ms | 16,894.90 ms |
The new Arrow/DataFusion architecture is still maturing. Performance may improve in future releases as the codebase is optimized.
QuestDB performance
QuestDB maintains sub-2 ms latency on single-groupby queries and 40-58 ms on full-table double-groupby aggregations. Ingestion peaks at 11.4M rows/sec at 100K hosts. The columnar storage with SIMD-optimized aggregation functions provides consistent performance across query types.
Conclusion
InfluxDB 3 Core represents InfluxData's bet on the Apache Arrow ecosystem. While current performance lags behind both QuestDB and older InfluxDB versions, the architectural foundation (Arrow, DataFusion, Parquet) provides a path to improvement. Notably, the new architecture eliminates the cardinality-based performance degradation that plagued v1/v2.
QuestDB's purpose-built columnar engine with SIMD optimization delivers 12x to 36x faster ingestion and 17x to 418x faster query performance on these benchmarks. For production workloads requiring high-throughput ingestion and predictable low-latency queries, QuestDB remains the faster choice.
We'll continue to monitor InfluxDB 3 Core performance as new versions are released.
Performance summary
| Workload | InfluxDB 3 Core | QuestDB | Advantage |
|---|---|---|---|
| Ingestion (4K hosts) | 320K rows/sec | 8.39M rows/sec | QuestDB 26x faster |
| Ingestion (1M hosts) | 320K rows/sec | 7.33M rows/sec | QuestDB 23x faster |
| Simple aggregation (1h) | 55-65 ms | ~1 ms | QuestDB 43-65x faster |
| Extended range (12h) | 700-740 ms | ~2 ms | QuestDB 375-418x faster |
| Double-groupby | 1.4-1.6 s | 40-58 ms | QuestDB 28-35x faster |
| Heavy scan | 16.9 s | 994 ms | QuestDB 17x faster |
Ready to try QuestDB? Get started with the quickstart guide or join our Slack community.