1 个不稳定版本
0.1.0 | 2024 年 7 月 13 日 |
---|
#5 在 #l1
每月 22 次下载
用于 2 个包 (通过 zksync_node_framework)
1.5MB
31K SLoC
zksync_node_db_pruner
数据库修剪器是一个组件,它定期从数据库中删除最旧的 L1 批次以及相应的 L2 块、事件等。
有两种类型的对象没有被完全清理
- 交易 只有
BYTEA
字段被清理,因为某些组件依赖于交易的存在。 - 存储日志: 只有被覆盖的存储日志被删除
修剪工作流程
(有关修剪的高级概述,请参阅 节点文档)
L1 批次的修剪有两个阶段:软修剪和硬修剪。每个将要被删除记录的批次首先进行 软修剪。软修剪的批次不能安全使用。软修剪后一分钟(这是可配置的),进行 硬修剪,硬修剪意味着从数据库中物理删除数据。
这种分割背后的原因是让节点组件(如 API 服务器)了解计划中的数据修剪,并提前限制对修剪数据的访问。这确保了数据不会意外地从 Postgres 中消失(从组件的角度看),在操作过程中(如处理 Web3 请求)突然消失。至少在某些情况下,比如与 VM 相关的 Web3 方法中,我们无法依赖数据库事务来达到这个目的。
依赖关系
~84MB
~1.5M SLoC