MemDB、VersionDB 以及文件内存映射存储(mmap),显著提升系统吞吐量。
为什么磁盘 I/O 是性能瓶颈
状态转换与持久化
每当执行一批交易并产出区块时,区块链系统都会从一个状态转变为下一个状态。这个过程分为两个基本阶段:- 状态提交(State Commitment):在交易执行完成后,提交新的状态。
- 状态存储(State Storage):已提交的状态被持久化到磁盘,用于长期访问和历史验证。

- 节点在继续执行下一个区块之前,必须等待新状态完全写入磁盘。
- 状态数据被写入磁盘中随机的位置,这导致在后续交易执行中读取状态时出现高延迟。
针对高吞吐量的数据库优化
为了解决这些限制,Stable 提出了两项核心架构优化:解耦状态操作 和 引入内存映射数据库优化(mmap)。1. 拆解状态提交与存储

- 在提交新状态后,节点可以立即执行下一个区块。
- 状态的持久化操作在后台异步进行。
2. 基于 mmap 的 MemDB 和 VersionDB
进一步通过 mmap(内存映射文件)实现双数据库模型:
- MemDB(内存数据库):
- 存储近期频繁访问的活跃状态。
- 使用固定地址映射(通过
mmap),支持快速的数据查找。 - 适用于大多数以近期状态为目标的交易场景。
- VersionDB(历史数据库):
- 存储更早期的历史状态。
- 优化用于归档和长周期查询,针对低频访问设计。
mmap 访问与状态智能分层,Stable 能够显著降低区块执行过程中的数据库读写延迟。

