Read the fair column
Pipelined Veloce ISAM MGET lands at 6,660,030/s next to Redis HMGET at 70,735/s. Pipelined ISAM MINSERT is 12,405,441/s vs Redis --pipe at 578,067/s. Chatty Veloce is the round-trip tax, not a different store.
2.73.13 · 43/44 aspects · host03 AMD EPYC-Milan, 12 vCPU, 23 GiB
Same 50,000 INSERT then 50,000 GET keyed workload, localhost, 2026-08-31T07:10:31Z. Veloce chatty waits for each ack (8 TCP clients) — that row stays 1 RTT. Async mixed is a separate surface: 16 clients send 85% GET / 15% INSERT without wait-for-line, then drain — still not chatty. Veloce pipelined INSERT is MINSERT×500 sent then drained — vs Redis --pipe of many HSETs and vs MySQL/Postgres multi-VALUES×500. Pipelined GET is MGET×500 vs Redis HMGET vs SQL SELECT … WHERE k IN (500 keys). Extra rows: local testdb UDS (still one round-trip per op, not SPIRE agent dial) and in-process TestDb (fair vs SQLite GET; not a replacement for TCP). SQLite is in-process WAL (one SELECT per get). We do not compare batched MGET to per-row SELECT. Rows labeled two-node Enterprise are the 2026-08-31 WAN replica chatty GET and pipe MGET×50 sample (2k ops, GET-only — INSERT shows as a dash on purpose) plus a replica INSERT+GET forward+mirror row (SET ROLE reader). Labels stay chatty vs pipe vs mux vs WAN. SQL pipe MINSERT is the CRLF text path; packed ISAM MINSERT is a different surface, not a regression of the same codec. Not a replacement for the localhost 50k ISAM/SQL vs MySQL/Redis suite above.
| Engine | Surface | INSERT ops/s | GET ops/s | GET p50 |
|---|---|---|---|---|
| VeloceDB SQL | TCP 2143 chatty (8 clients) | 14,935 | 15,761 | 444 µs |
| VeloceDB ISAM | TCP 1583 chatty (8 clients) | 15,699 | 15,905 | 447 µs |
| VeloceDB SQL | TCP 2143 MINSERT×500 / MGET×500 pipelined | 401,437 | 5,009,732 | 0 µs |
| VeloceDB ISAM | TCP 1583 MINSERT×500 / MGET×500 pipelined | 12,405,441 | 6,660,030 | 0 µs |
| SQLite | in-process WAL file | 351,552 | 166,165 | 5 µs |
| Redis 7.4.9 | HASH --pipe / HMGET×500 TCP 26379 | 578,067 | 70,735 | 13 µs |
| VeloceDB ISAM | UDS chatty (8 clients, AF_UNIX) | 17,377 | 16,982 | 412 µs |
| VeloceDB | in-process recno table + page WAL (no TCP) | 970,370 | 2,427,413 | 0 µs |
| MySQL 8.4.10 | 127.0.0.1:3306 InnoDB INSERT×500 / SELECT IN×500 | 109,644 | 113,633 | 9 µs |
| PostgreSQL 18.6 | 127.0.0.1:5432 INSERT×500 / SELECT IN×500 | 156,309 | 174,689 | 6 µs |
| VeloceDB SQL | TCP 2143 async mixed 85/15 GET/INSERT x16 (not chatty) | 433,617 | 2,480,476 | 0 µs |
| VeloceDB ISAM | TCP 1583 async mixed 85/15 GET/INSERT x16 (not chatty) | 141,636 | 810,219 | 1 µs |
| VeloceDB SQL (two-node Enterprise) | WAN replica GET host03→host02:2143 chatty 1 RTT (GET-only, 2k ops) | — | 4,745 | 201 µs |
| VeloceDB SQL (two-node Enterprise) | WAN replica pipe MGET×50 host03→host02:2143 (GET-only, not chatty, 2k ops) | — | 154,771 | 6 µs |
| VeloceDB SQL (two-node Enterprise) | WAN replica INSERT+GET host03→host02:2143 SET ROLE reader (forward+mirror, 200 ops) | 1,185 | 3,915 | 250 µs |
Pipelined Veloce ISAM MGET lands at 6,660,030/s next to Redis HMGET at 70,735/s. Pipelined ISAM MINSERT is 12,405,441/s vs Redis --pipe at 578,067/s. Chatty Veloce is the round-trip tax, not a different store.
351,552 INSERT/s is in-process WAL with no TCP. The extra Veloce embed row is the same TestDb recno table in-process — fair vs SQLite GET, not a replacement for the TCP numbers.
Oracle XE / 23ai Free is not installed (license click-through, no Ubuntu package). Native C++/mmap WAL is labeled EXTERNAL in SHOW WAL. Redis PING in the harness is a redis-cli spawn, not the Redis RTT. MySQL and PostgreSQL rows are batched SQL (500), labeled as such — not per-row SELECT vs MGET.
Pack 17 leftover: 173 onion nodes, 74 overlay jobs, 37 toolbar JSON rows. Not a Lighthouse letter. Not a same-box testdb rerun. Live benches stay 2.73.13 above.