5 关于存储数组会不会产生意外情况的疑问

想了解一下。如果想把dapp的业务完全用合约来实现。把业务相关的数据直接存到合约上。 目前采用的是直接存到结构体数组。并且实现了写入和根据用户地址来读取的方法给前端调用。但是考虑到数据量会逐步增大。想了解下以下几个问题: 1.数据越来越大是否会影响写入操作的gas? 2.数据一直叠加的话,后续读取的速度是否会因为数组长度越来越大导致读取速度变慢? 3.如果以分页的形式每次只获取少量数据对于读取速度是否有改善效果? 4.如果设计才能够更安全快速的读写这类大量的业务数据比较合理?

请先 登录 后评论

最佳答案 2022-11-02 21:25

1.数据越来越大是否会影响写入操作的gas?

不会

2.数据一直叠加的话,后续读取的速度是否会因为数组长度越来越大导致读取速度变慢?

如果有迭代,那么 gas 会随项目越多,gas 越大。最终突破区块 gas 限制无法执行。你要考虑 gas 限制,而不是速度。

3.如果以分页的形式每次只获取少量数据对于读取速度是否有改善效果?

通过减少迭代的次数可以限制 gas

4.如果设计才能够更安全快速的读写这类大量的业务数据比较合理?

一般推荐的方式是使用 Map (映射), 并在链下缓存数据,来方便迭代读取数据。

请先 登录 后评论

其它 1 个回答

bug?
请先 登录 后评论
  • 2 关注
  • 1 收藏,1699 浏览
  • 螺丝钉 提出于 2022-10-29 17:53