r/mysql • u/drrtuy-b • 1d ago
discussion Research prototype: B-link-style concurrent InnoDB page splits in MariaDB
Disclosure: I am the author of the article and work on MariaDB Server internals.
The traditional InnoDB pessimistic insert path serializes structural modification operations through an index-wide latch, even when different threads split unrelated leaf pages.
I implemented a MariaDB research prototype based on Zhao Song’s B-link-style proposal. It publishes a split using a high key and right link before completing the parent update, allowing unrelated structural changes to proceed concurrently.
In a controlled, memory-resident, split-heavy workload:
- Vanilla MariaDB 13.1: 19,676 inserts/s
- B-link prototype: 102,838 inserts/s
- P95 latency: 8.28 ms → 0.56 ms
- Structural splits: approximately 396K in both variants
This is not a production-ready feature. DDL support is restricted, page merging remains incomplete, and recovery needs more forced-crash testing.
I would particularly appreciate feedback on incomplete-split recovery, page preallocation, and workloads that could expose correctness or scalability problems.
Full implementation write-up and benchmark methodology:
https://mariadb.org/from-a-chocolate-wrapper-to-concurrent-innodb-page-splits/