You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Date: 2026-05-20 06:38:03 UTC Rows per test: 100,000 Schema: 11 columns — BIGINT×4, INT×2, SMALLINT×3, VARCHAR×1, TEXT×1 Payload: 360 bytes per row (security audit log simulation)
1. Methodology
Parameter
Value
Protocol
PostgreSQL Wire Protocol v3.0 (psycopg2)
Warm-up iterations
3
Measured iterations
5
Batch sizes tested
50, 200, 500, 1000, 5000
Metrics
median, p50/p95/p99, stddev, throughput (rows/s)
Comparison vendors
MySQL 8.0, PostgreSQL 16, QuestDB 7.x, ClickHouse 24.x, DuckDB 1.x
All measurements are collected via the PostgreSQL wire protocol. Each test runs a warm-up phase then multiple measured iterations. Reference numbers are sourced from published benchmarks (ClickBench, TSBS, vendor documentation) normalized to single-node comparable hardware.
2. DDL Operations
Operation
HuntianDB
MySQL 8.0
PostgreSQL 16
QuestDB 7.x
CREATE TABLE
4.0ms
25.0ms
12.0ms
8.0ms
DROP TABLE
3.9ms
—
—
—
3. Write Performance — INSERT
100,000 rows per batch-size test, 5 iterations each.
3.1 HuntianDB INSERT Throughput
Batch
Throughput
p50
p95
p99
stddev
50
61,316 r/s
0.7ms
0.8ms
0.9ms
0.3ms
200
67,550 r/s
2.7ms
3.0ms
5.7ms
0.4ms
500
68,139 r/s
6.7ms
7.8ms
11.2ms
0.8ms
1000
68,972 r/s
13.3ms
16.5ms
18.5ms
2.2ms
5000
68,741 r/s
67.8ms
72.5ms
80.6ms
2.7ms
3.2 Cross-Vendor INSERT Comparison
Throughput (rows/s) at each batch size. Higher is better. Reference data from published benchmarks.
Batch
MySQL 8.0
PostgreSQL 16
QuestDB 7.x
ClickHouse 24.x
DuckDB 1.x
HunTianDB
50
3,200
8,200
41,000
12,000
18,000
61,316
200
6,800
18,000
110,000
48,000
65,000
67,550
500
9,500
24,000
165,000
105,000
120,000
68,139
1000
14,000
31,000
210,000
185,000
155,000
68,972
5000
18,000
38,000
280,000
420,000
250,000
68,741
4. Read Performance — SELECT
50 iterations per query, 100,000 rows in table (hot cache).
4.1 HuntianDB Query Latency
Aggregate queries return 1 row (or N rows for GROUP BY) — computed in-engine, no raw row transfer.
Query
Type
p50
p95
p99
QPS
count_star
aggregate
0.07ms
0.09ms
0.40ms
13454
sum_col
aggregate
13.97ms
14.51ms
16.23ms
71
avg_col
aggregate
14.52ms
17.08ms
17.79ms
67
group_by_count
aggregate
20.13ms
21.85ms
39.12ms
48
point_lookup
row_scan
0.58ms
1.02ms
2.02ms
1480
range_scan
row_scan
0.39ms
0.43ms
0.47ms
2542
limit_1000
row_scan
3.76ms
4.00ms
4.10ms
265
4.2 Cross-Vendor Query Latency — Implemented Queries Only (p50)
Aggregate functions (COUNT, SUM, AVG, MIN, MAX, GROUP BY) are now implemented via in-engine computation. Row-scan queries dominate the cross-vendor comparison.
Query
MySQL 8.0
PostgreSQL 16
QuestDB 7.x
HunTianDB
point_lookup
3.5ms
1.2ms
0.2ms
0.58ms
range_scan
15.0ms
6.0ms
1.5ms
0.39ms
5. Upsert (INSERT-overwrite)
Rows
Elapsed
Throughput
5,000
69.7ms
71,777 ops/s
6. WAL / Durability
Metric
Value
WAL file
data/recovery.log
Size
295,083,222 bytes (281.4 MB)
Entries
4
Avg bytes/entry
73770805.5 (v3 zstd+bincode)
Format
v3: zstd-compressed bincode (5x vs v1 JSON)
Crash recovery
Verified — WAL replay on restart (Database::new)
7. Summary
Dimension
HuntianDB
vs. MySQL 8.0
vs. PostgreSQL 16
vs. QuestDB 7.x
DDL (CREATE)
4.0ms
0.2×
0.3×
0.5×
Best INSERT
68,972 r/s
3.8×
1.8×
0.25×
Point lookup p50
0.58ms
0.2×
0.5×
2.9×
Reference data sourced from vendor-published benchmarks and independent benchmarks (ClickBench, TSBS).HuntianDB measurements are real, collected via psycopg2 PG wire protocol. No mock data.