KalamDB Benchmark Report

Performance analysis — v0.4.2-rc.3
http://127.0.0.1:8080 2026-04-26T18:40:14.807395+00:00 100 iters 5 warmup 10 concurrency 100.0K max subs
38
Total Benchmarks
38
Passed
0
Failed
Verdict Mix
32Excellent
5Acceptable
1Slow
successful benchmarks only
Compared To Previous
4Faster
5Same
29Slower
against 2026-04-21T17:18:42.418760+00:00
252.149s
Measured Benchmark Time
288.719s
Wall Clock Duration
System Information
Hostname
Jamals-MacBook-Pro.local
Machine Model
MacBookPro18,3
CPU Model
Apple M1 Pro
CPU Cores
10 logical / 10 physical
Total Memory
16.00 GiB
Available Memory
10.45 GiB
Used Memory
5.55 GiB
Memory Usage
34.7%
OS
Darwin macOS 26.5
Kernel
25.5.0
Architecture
aarch64

Latency by Operation (µs)

Throughput (ops/sec)

Avg Latency by Category (µs)

Detailed Results
Status Benchmark Category Description Iters Mean P50 P95 P99 Min Max Ops/sec Total Verdict vs Prev
PASScreate_tableDDL
CREATE TABLE with 3 columns
100531µs471µs881µs1.19ms364µs1.44ms1.9K53.1ms🟢 Excellent↑99% faster
PASSdrop_tableDDL
DROP TABLE on a previously created table
1004.28ms4.32ms5.46ms5.59ms2.69ms5.67ms234428.1ms🟢 Excellent↑96% faster
PASSsingle_insertInsert
INSERT a single row into a table
100384µs335µs634µs1.05ms257µs1.06ms2.6K38.4ms🟢 Excellent↓15% slower
PASSbulk_insertInsert
One INSERT statement with 50 rows (statement-scoped transaction)
1001.29ms1.25ms1.78ms1.91ms907µs2.09ms777128.7ms🟢 Excellent↑6% faster
PASStransaction_multi_insertInsert
Explicit BEGIN/COMMIT with 50 single-row INSERT statements
1004.22ms4.13ms5.28ms5.74ms3.12ms6.03ms237421.5ms🟡 Acceptable↓46% slower
PASSselect_allSelect
SELECT * from a 200-row table
1001.53ms1.22ms3.56ms4.95ms844µs6.89ms654152.9ms🟢 Excellent↓93% slower
PASSselect_by_filterSelect
SELECT with WHERE clause on a 200-row table
100647µs568µs1.24ms1.38ms382µs1.65ms1.5K64.7ms🟢 Excellent↓51% slower
PASSselect_countSelect
SELECT COUNT(*) on a 200-row table
100998µs972µs1.41ms1.51ms667µs1.56ms1.0K99.8ms🟢 Excellent↓52% slower
PASSselect_order_by_limitSelect
SELECT with ORDER BY + LIMIT 10 on a 200-row table
1001.21ms1.21ms1.58ms1.75ms810µs1.85ms823121.5ms🟢 Excellent↓55% slower
PASSsingle_updateUpdate
UPDATE a single row by filter condition
1001.54ms1.56ms1.98ms2.09ms1.06ms2.14ms647154.4ms🟢 Excellent↓298% slower
PASSsingle_deleteDelete
DELETE a single row by filter condition
1002.13ms2.04ms2.66ms2.83ms1.57ms3.02ms470212.6ms🟡 Acceptable↓600% slower
PASSconcurrent_insertConcurrent
N concurrent INSERT operations in parallel (N = concurrency setting)
1001.69ms1.53ms2.37ms2.55ms1.17ms5.86ms591169.2ms🟢 Excellent↓45% slower
PASSconcurrent_selectConcurrent
N concurrent SELECT operations in parallel (N = concurrency setting)
1001.39ms1.31ms2.02ms2.56ms903µs2.85ms719139.0ms🟢 Excellent↓19% slower
PASSpoint_lookupSelect
SELECT by primary key from a 10K-row table (single row lookup)
Baselinephase-0 performanceQuery Classprimary-key lookupDataset10000 seeded rowsQuery ShapeSELECT * FROM <ns>.point_lookup WHERE id = ?
100591µs521µs1.11ms1.19ms355µs1.32ms1.7K59.1ms🟢 Excellent↓55% slower
PASSaggregate_querySelect
GROUP BY + SUM/AVG/COUNT on a 10K-row table (analytical query performance)
10034.9ms34.9ms36.8ms37.1ms32.3ms37.2ms293.487s🔴 Slow↓28% slower
PASSmulti_table_joinSelect
SELECT with subquery across two tables (200 customers, 1000 orders)
1004.44ms4.45ms4.99ms5.26ms3.34ms5.40ms225443.6ms🟢 Excellent↓48% slower
PASSlarge_payload_insertInsert
INSERT rows with ~4KB TEXT payloads (serialization + storage throughput)
1002.08ms2.03ms2.59ms2.70ms1.59ms2.85ms480208.3ms🟢 Excellent↓71% slower
PASSwide_column_insertInsert
INSERT into a 20-column table (wide schema overhead)
1001.15ms1.11ms1.66ms1.73ms838µs1.80ms867115.3ms🟢 Excellent↑31% faster
PASSbulk_deleteDelete
DELETE 100 rows at once with a range filter (bulk deletion)
10081.5ms81.8ms88.8ms92.3ms71.5ms126.3ms128.150s🟡 Acceptable↓19% slower
PASSsequential_crudDML
INSERT → UPDATE → SELECT → DELETE full DML lifecycle per iteration
1003.63ms3.59ms4.81ms5.22ms2.04ms12.8ms275363.1ms🟢 Excellent↓138% slower
PASSalter_tableDDL
ALTER TABLE ADD COLUMN + DROP COLUMN (schema evolution latency)
1001.94ms1.88ms2.75ms2.99ms1.13ms3.39ms515194.2ms🟢 Excellent↓63% slower
PASSconcurrent_updateConcurrent
N concurrent UPDATE operations on the same table (write contention test)
1004.27ms4.11ms5.86ms6.84ms2.23ms8.81ms234427.0ms🟢 Excellent↓202% slower
PASSconcurrent_mixed_dmlConcurrent
Concurrent INSERT + UPDATE + DELETE on the same table (multi-op contention)
1004.17ms4.21ms5.11ms5.93ms2.57ms6.07ms240417.2ms🟢 Excellent↓49% slower
PASSnamespace_isolationConcurrent
Concurrent queries across 5 different namespaces (isolation test)
1002.77ms2.27ms3.49ms14.3ms1.77ms16.3ms361277.3ms🟢 Excellent↓57% slower
PASSsubscribe_initial_loadSubscribe
Subscribe to a 1000-row user table and receive the full initial data batch
1008.73ms8.74ms9.26ms9.88ms7.62ms10.1ms115873.0ms🟢 Excellent↓102% slower
PASSsubscribe_change_latencySubscribe
Latency from INSERT to subscriber receiving the change notification
10049.6ms49.6ms53.5ms56.6ms42.5ms58.4ms204.957s🟡 Acceptable~ 49414µs prior
PASSreconnect_subscribeSubscribe
Disconnect and re-subscribe to a user table (reconnection overhead)
10011.0ms11.1ms11.9ms12.1ms9.35ms12.4ms911.105s🟢 Excellent↓14% slower
PASSflushed_parquet_queryStorage
SELECT from a shared table with 20 flushed Parquet files (200K rows)
100189.1ms223.9ms318.5ms329.6ms28.3ms346.7ms518.909s🟡 Acceptable↓24% slower
PASSconcurrent_subscribersLoad
N WebSocket live-query subscribers receiving changes from concurrent writes
1001.567s1.575s1.599s1.607s1.523s1.612s12.61m🟢 Excellent~ 1546624µs prior
PASSconcurrent_publishersLoad
N concurrent INSERTs into a topic-sourced table (measures publish overhead)
1001.68ms1.61ms2.12ms2.45ms1.33ms4.00ms595168.1ms🟢 Excellent↓36% slower
PASSconcurrent_consumersLoad
N concurrent topic CONSUME calls pulling messages in parallel
100662µs656µs762µs858µs556µs898µs1.5K66.2ms🟢 Excellent~ 646µs prior
PASSsql_1k_concurrentLoad
1000 concurrent SQL SELECT queries at once (RPS degradation test)
Baselinephase-0 performanceQuery Classconcurrent read burstDataset500 seeded rowsBurst1000 concurrent SQL queriesQuery Mixpk lookup, count, selective order-by limit, narrow projection
100171.6ms171.8ms177.0ms179.4ms164.7ms184.4ms617.163s🟢 Excellent↓11% slower
PASScreate_userLoad
CREATE USER (auth subsystem stress test)
1001.39ms1.38ms1.60ms1.78ms1.21ms1.87ms722138.6ms🟢 Excellent↓10% slower
PASSdrop_userLoad
DROP USER (auth subsystem teardown stress test)
100280µs268µs405µs445µs194µs495µs3.6K28.0ms🟢 Excellent~ 286µs prior
PASSconnection_stormLoad
N simultaneous login + SQL + cycles (connection setup overhead)
100318.9ms316.3ms338.2ms370.7ms304.7ms378.9ms331.890s🟢 Excellent↓13% slower
PASSmixed_read_writeLoad
50/50 concurrent reads + writes on same table (contention test)
Baselinephase-0 performanceQuery Classmixed concurrent read/writeDataset200 seeded rowsMix5 reads / 5 writesRead Shapesrange filter, count-star, order-by desc limit
1002.41ms2.30ms3.32ms6.26ms1.51ms6.76ms415241.2ms🟢 Excellent↓6% slower
PASSwide_fanout_queryLoad
N concurrent large-result-set SELECTs (serialization + memory pressure)
1007.06ms6.54ms11.8ms14.0ms5.81ms15.1ms142705.9ms🟢 Excellent↓15% slower
PASSsubscriber_scaleScale
Progressive live-query subscriber scale and insert fanout verification up to 100.0K
Max100.0KTiers10 checkpoints to 100.0KBatch/Wave1.0K / 500Pause/Timeout0ms / 30.0sShared WS1.0K conns @ 100 subs/ws across 1 targetDelivery Checksall tiers to 10.0K + 25.0K/50.0K/100.0K
12.836s2.836s2.836s2.836s2.836s2.836s02.836s🟢 Excellent~ 2857025µs prior
Whole Bench Totals252.149sWall clock 288.719s