MPT树存储的优缺点
区块链如果采用MPT树存储,大概会有以下优点:
- 可用全局数据的根哈希做共识,数据篡改会被立即发现;
- 可以查询任意历史区块对应时刻的所有数据;
- 方便从指定区块开始同步数据,因为正如上面所说每个区块包含当时的所有数据;
- 方便区块回滚和重演,这在发生分叉和修正最长链时很有帮助。
大概就是因为这些优点,以太坊用一棵账户树记录所有账户的信息,账户下面挂接一棵存储树记录该账户的合约信息,这便是以太坊MPT存储的全部。
以太坊MPT存储
那么这种存储结构就没有什么缺点吗?
当然有。其中一个问题是,随着数据量的增大,查询延时越来越大。这对性能压力较高的区块链服务是个不得不面对的问题,你会看到随着数据量的增长,TPS越来越低,合约执行性能的降低尤其明显。通过分析发现,时间主要花在levelDB的读取上。文章来源:https://www.toymoban.com/news/detail-465179.html
性能问题的原因分析
下图就是MPT树在内存中的大致结构,真实的环境因为key-value字符串比较长所以树要深很多。应用层读一个key,会触发底层读取一系列的节点构建MPT树最终找到存储在叶子节点中的value。如果key对应的value被修改,对应叶子节点到根节点路径上所有节点都要更新并写到磁盘。说白了,MPT树存在读写放大的问题。文章来源地址https://www.toymoban.com/news/detail-465179.html
到了这里,关于区块链存储优化——从MPT树到KV存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!