Skip to content

Latest commit

 

History

History
109 lines (80 loc) · 4.78 KB

File metadata and controls

109 lines (80 loc) · 4.78 KB

HunTianDB — Performance Benchmark Report

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.