FoundationDb:FDBException 的含义是什么:事务太旧,无法执行读取或提交

FoundationDb: What is meaning of FDBException: Transaction is too old to perform reads or be committed

我正在尝试在 fdbCli 中执行 getRange 命令,但它失败了 FDBException: Transaction is too old to perform reads or be committed 这个特殊的例外是什么意思? 这是否意味着查询需要超过 5 秒才能完成?

Fdb 保留 5 秒内开始的事务列表。此外,数据节点只保留最后 5 秒的版本。所以如果读取的版本小于dataNodes保存的最后一个版本,dataNodes没有办法响应请求。这就是 fdb 抛出此异常的原因。避免此类异常的技巧是将大量时间进行交易拆分为许多小交易。我还注意到,如果事务时间 < 300 毫秒,fdb 的性能会非常好。