RonDB training · module 25 of 25 · 16 min
Performance and what's new
What RonDB delivers in measured numbers, how to measure it yourself, and how it grew from 21.04 to 26.10.
Benchmarks · shipped with RonDB
The benchmarks RonDB is tested with come in the binary tarball
SQL
Sysbench, DBT2 and DBT3, driven by scripts in the tarball; the ndbcrunch MTR suite runs Sysbench on one machine.
Native and key-value
flexAsynch for the NDB API, YCSB for ClusterJ and JDBC.
REST and Rondis
Benchmarks for pk-read, batch, feature store and Redis commands; the RonDB CLI of 26.10 runs them too.
Every release is benchmarked to keep throughput and latency where they were. Measure on your own hardware before sizing.
docs: mysql_bench.md · benchmark_sysbench.md · benchmark_dbt2.md · benchmark_ycsb.md · rest_bench.md · release_notes_26040.md (RonDB CLI, Test environment)
Sysbench · 2 data nodes and 2 MySQL servers on one desktop
Sysbench: from 0.04 ms point selects to half a million per second
| Benchmark | Threads | Per second | Average latency |
|---|---|---|---|
| OLTP read-write, transactions | 1 | 833 | 1.21 ms |
| OLTP read-write, transactions | 128 | 13 041 | 9.81 ms |
| OLTP write-only, transactions | 256 | 55 073 | 4.64 ms |
| Point select | 1 | 25 568 | 0.04 ms |
| Point select | 128 | 565 536 | 0.23 ms |
Data nodes on the efficiency cores, MySQL servers on the performance cores, SpinMethod=DatabaseMachineSpinning.
docs: mysql_bench.md (mtr --suite=ndbcrunch with cpubind; the rows quoted)
Key lookups · from one server to a cluster
Key lookups at scale: over 100 million per second through the REST API
104.5 M
key lookups per second, 15.6 GB/s of JSON: 6 data nodes, 36 REST servers, Graviton 4
61.4 M
key lookups per second at 2 ms P99, latency-optimised batches of 100
5.1 M
Rondis MGET keys per second from one server, 32 threads
NDB, RonDB's origin, has demonstrated 205 million reads and about 20 million writes per second.
FSS 2026 talk (2026-10/rondb26 #bench) · docs: rondis_bench.md (MGET 5 086 117/s, batch 110, 32 threads) · rondb_use_cases.md (205 million reads)
A lesson · from every benchmark
Batching gives the same throughput with far less CPU than threads
| REST pk-read, one server | Batch | Threads | Rows per second |
|---|---|---|---|
| One row per request | 1 | 1 | 23 654 |
| More threads | 1 | 64 | 236 875 |
| Batching instead | 256 | 1 | 211 251 |
| Both | 256 | 32 | 2 146 081 |
One thread with batches of 256 nearly matches 64 threads without: about 10× less CPU per row. The same holds for the NDB API, ClusterJ and Rondis.
docs: rest_bench.md · notes: replication-perf-news.md (batching about 10× less CPU)
Networking · when the wire is the limit
Networking: a faster interconnect can double throughput and cut latency in half
10G Ethernet
- A Sysbench setup stopped at about 8300 transactions per second for lack of bandwidth.
- Colocated MySQL server and data node over shared memory: about 10% more.
Dolphin interconnect
- About 50 Gbit/s between machines.
- Up to almost 100% more throughput, latency about halved.
- RDMA transporters arrived in 26.02.11.
docs: dolphin_benchmark.md · benchmark_sysbench.md · release_notes_260211.md (RDMA transporters)
Engineering · measured improvements
Measured gains: each release found more performance in the same hardware
| Release | Change | Effect |
|---|---|---|
| 21.04 | Receive threads that wake faster | PK read round trip 0.94 → 0.25 ms |
| 22.10 | Better placement of primary replicas | DBT2 about 30% faster |
| 22.10 | Index statistics mutex bottleneck removed | At least 10% more throughput |
| 24.10 | Scan batches from 992 to 4000 rows, without locks | Larger scans per round trip |
| 25.10 | Higher parallelism in long scans | ORDER BY on millions of rows 3–4× faster |
| 26.10 | Many low-level optimisations | 10–20% better throughput |
docs: new_features_2104.md · new_features_2210.md · new_features_2410.md · release_notes_25102.md (RONDB-934) · release_notes_26041.md · code: ndb_limits.h (MAX_PARALLEL_OP_PER_SCAN_RC 4000, _WITH_LOCK 992)
PART 1
What's new, 21.04 to 26.10
Five years of releases in five slides.
21.04 · 22.10 · the self-configuring database
RonDB 21.04, 22.10: auto-configuration, query threads, variable-size disk rows
21.04
- Automatic thread and memory configuration (modules 12, 13).
- Adaptive CPU spinning.
- Configurable number of replicas.
- ClusterJ 3× faster; benchmarks in the tarball.
22.10
- Variable-size disk rows (module 04).
- Query threads, later query workers (module 11).
- xxHash replaces MD5 (module 08).
- Schema memory in the global manager; memory limits read in containers.
docs: new_features_2104.md · new_features_2210.md
24.10 · data services for AI
RonDB 24.10: a new REST server, Redis protocol, TTL and SQL in the data nodes
Interfaces
rdrs2, the C++ REST server; Rondis, the Redis protocol; RonSQL for aggregates, experimental (modules 21, 22).
Data management
TTL service; rate limits and quotas per database; pushdown aggregation; many new interpreter functions and its memory.
Operations
Faster recovery through parallel algorithms; automatic memory in containers; round-robin group tuning.
docs: new_features_2410.md
25.10 · 26.02 · scale and safety, on MySQL 8.4
RonDB 25.10 and 26.02: more API nodes, safer rolling restarts, RDMA
| Release | Based on | Highlights |
|---|---|---|
| 25.10.2 | MySQL NDB 8.4.6 | REST scan endpoint; long scans 3–4× faster; API nodes 255 → 2039 |
| 25.10.19 | MySQL NDB 8.4.6 | Restart barrier (module 16); REST probe port; MaxRRGroupSize up to 32 |
| 26.02.0 | MySQL NDB 8.4.8 | 25.10 on the newer MySQL base |
| 26.02.11 | MySQL NDB 8.4.11 | 8191 API nodes; user rate limits; RDMA transporters; minimal Docker image |
docs: release_notes_25102.md · release_notes_251019.md · release_notes_26020.md · release_notes_260211.md
26.10 · SQL, data and APIs
RonDB 26.10: joins and CTEs in RonSQL, ring buffers, 4096 columns, new tools
Data and SQL
- Pushdown join aggregation with CTEs in RonSQL (module 22).
- Up to 4096 columns per table, larger rows.
- Ring buffer tables (module 23).
- Proactive deadlock detection (module 09).
APIs and tools
- REST batchwrite, batchdelete and API 0.2.0 (module 21).
- RonDB CLI for MySQL, REST and Rondis.
- Rondis improved, still experimental.
- JIT for pushed programs; runtime SET in ndb_mgm, adaptive send (module 18).
docs: release_notes_26040.md · release_notes_26041.md · code: ConfigInfo.cpp (EnableProactiveDeadlockDetection, CompiledInterpreter, AdaptiveSendThreshold) · CommandInterpreter.cpp (SET) · rest-server2/server/src/constants.hpp (batchwrite, batchdelete, API_VERSION_2)
Quality · four ways of testing
Testing: every release passes functional, crash, benchmark and production tests
MTR
Functional tests written in SQL, with RonSQL results compared against MySQL's.
Autotest
The NDB API under failure: thousands of restarts with error injection per full run.
Benchmarks · Hopsworks
Throughput and latency kept at their level; then the whole Hopsworks platform on top.
docs: release_notes_26040.md (Test environment) · ronsql.md (results compared with MySQL)
Recap · module 25, and the day
What to take away
- The benchmarks ship with RonDB: measure on your own hardware.
- Batch before adding threads: about 10× less CPU per row.
- From 0.04 ms point selects to 100 million lookups per second.
- 21.04 configured itself; 24.10 added REST, Rondis, TTL and RonSQL; 25.10 and 26.02 added scale.
- 26.10 adds joins and CTEs in RonSQL, ring buffer tables, proactive deadlock detection and a JIT.
End of the RonDB training · thank you
RonDB training · 25 modules · you are at 25