首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FoundationDb: FDBException的含义是什么:事务太老了,无法执行读取或提交

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

Stack Overflow用户
提问于 2019-12-27 16:37:29
回答 2查看 512关注 0票数 1

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-06 08:42:44

Fdb保存在5秒内启动的事务列表。此外,数据节点只保留最后5秒的版本。因此,如果读取的版本小于dataNodes保存的上一个版本,则dataNodes无法响应请求。这就是fdb抛出这个异常的原因。逃避这种例外情况的诀窍是将一大笔时间花在许多小事务上。我还注意到,如果事务时间<300 if,则fdb执行得非常好。

票数 0
EN

Stack Overflow用户

发布于 2022-09-15 14:39:27

首先-是的,您是正确的(您的查询需要超过5秒才能完成)。

如果读取请求的时间戳大于5秒,则存储服务器可能已经将数据从其内存中的多版本数据结构刷新到其磁盘上的单版本数据结构。这意味着存储服务器没有大于5秒的数据。因此,客户端将收到您提到的错误。

NB:您可以通过使用RecordCursor并通过向查询传递一个延续来避免这个问题。

关于延续这里的更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59503571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档