繁体   English   中英

每个块有多少存储迁移时间?

[英]How much storage migration do you have time for per block?

作为运行时升级的一部分,我试图提出一些关于一个块中有多少存储迁移时间的实际界限。

所以假设

  • 在 Substrate 设置中,有 N 个验证者运行当前的共识系统,而不是作为平行链
  • 节点在不错的民用工作站上运行
  • 迁移代码由执行数据库读/写对序列以及正常的关联编码/解码逻辑控制
  • 每个读/写对中的数据大小非常稳定,平均为 M 字节

让 f(N, M) 是当没有其他外部处理时,您将能够在单个块中安全地执行的读、写对的数量。

对 f(N,M) 的外观有什么好的猜测? 对于 N(例如 40)和 M(例如 32、1024)的流行值,只是一些不错的答案。

我问,因为围绕此的约束必须告知模块是如何构建的。

首先,为什么 N 在这里相关? 迁移可以发生在特定的区块,并且约束是能够在区块时间内适应它。

为此,我建议进行一些微基准测试(在 WASM 中)并估算每个操作的成本。 把它放在你想要的块时间旁边,你应该有一个很好的数字。 我也会进一步减少它以确保安全。

请注意,数据迁移的类型在这里很重要; 如果您正在存储值,这相当容易,我认为您应该没问题,因为瓶颈可能是解码,而不是散列。 如果你的值(比如一个大的 vec)已经大到不能在一个块中读+写一次,那么你的问题就大得多。 使用地图,您必须考虑到您将进行更多的状态查找,因此整个过程有所不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM