当前位置:   article > 正文

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

mpt树稀疏

MPT树存储的优缺点

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

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

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

以太坊MPT存储

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

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


性能问题的原因分析

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/321784
推荐阅读
相关标签
  

闽ICP备14008679号