区块链存储优化——从MPT树到KV存储

本文探讨了区块链中MPT树存储的优缺点,特别是其性能问题,分析了原因,并提出使用KV存储作为解决方案。通过采用KV存储,可以解决读写放大问题,但同时带来了新的挑战,如共识算法、历史数据查询和原子性事务处理。文章总结了应对这些问题的策略,指出KV存储能显著提升性能,但也需要权衡和适配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MPT树存储的优缺点

区块链如果采用MPT树存储,大概会有以下优点:

  1. 可用全局数据的根哈希做共识,数据篡改会被立即发现;
  2. 可以查询任意历史区块对应时刻的所有数据;
  3. 方便从指定区块开始同步数据,因为正如上面所说每个区块包含当时的所有数据;
  4. 方便区块回滚和重演,这在发生分叉和修正最长链时很有帮助。

大概就是因为这些优点,以太坊用一棵账户树记录所有账户的信息,账户下面挂接一棵存储树记录该账户的合约信息,这便是以太坊MPT存储的全部。

以太坊MPT存储

那么这种存储结构就没有什么缺点吗?

当然有。其中一个问题是,随着数据量的增大,查询延时越来越大。这对性能压力较高的区块链服务是个不得不面对的问题,你会看到随着数据量的增长,TPS越来越低,合约执行性能的降低尤其明显。通过分析发现,时间主要花在levelDB的读取上。


性能问题的原因分析

下图就是MPT树在内存中的大致结构,真实的环境因为key-value字符串比较长所以树要深很多。应用层读一个key,会触发底层读取一系列的节点构建MPT树最终找到存储在叶子节点中的value。如果key对应的value被修改,对应叶子节点到根节点路径上所有节点都要更新并写到磁盘。说白了,MPT树存在读写放大的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值