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

BenchmarkThreadsPer secondAverage latency
OLTP read-write, transactions18331.21 ms
OLTP read-write, transactions12813 0419.81 ms
OLTP write-only, transactions25655 0734.64 ms
Point select125 5680.04 ms
Point select128565 5360.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 serverBatchThreadsRows per second
One row per request1123 654
More threads164236 875
Batching instead2561211 251
Both256322 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

ReleaseChangeEffect
21.04Receive threads that wake fasterPK read round trip 0.94 → 0.25 ms
22.10Better placement of primary replicasDBT2 about 30% faster
22.10Index statistics mutex bottleneck removedAt least 10% more throughput
24.10Scan batches from 992 to 4000 rows, without locksLarger scans per round trip
25.10Higher parallelism in long scansORDER BY on millions of rows 3–4× faster
26.10Many low-level optimisations10–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

ReleaseBased onHighlights
25.10.2MySQL NDB 8.4.6REST scan endpoint; long scans 3–4× faster; API nodes 255 → 2039
25.10.19MySQL NDB 8.4.6Restart barrier (module 16); REST probe port; MaxRRGroupSize up to 32
26.02.0MySQL NDB 8.4.825.10 on the newer MySQL base
26.02.11MySQL NDB 8.4.118191 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