首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单线程LMDB

单线程LMDB
EN

Stack Overflow用户
提问于 2016-05-20 14:30:25
回答 2查看 358关注 0票数 0

如果您只从单个线程使用LMDB,并且根本不关心数据库持久性,那么打开和关闭事务还有什么理由吗?

在单个事务中执行所有操作会导致性能问题吗?打开和关闭太多事务是否会影响性能?

我发现我的LMDB数据库在增长到超过可用RAM时会显著减慢,但是我的SSD和CPU都没有达到它们的容量。

EN

回答 2

Stack Overflow用户

发布于 2016-06-06 04:02:12

如果事务未提交,则不能保证读取器(在不同的进程中)可以读取该项。写事务应该在某个时刻提交,以便数据可供其他读取器使用。

数据库速度减慢可能只是由于非顺序写入造成的。从这篇文章(https://ayende.com/blog/163330/degenerate-performance-scenario-for-lmdb)开始,非顺序写入需要更长的时间。

票数 0
EN

Stack Overflow用户

发布于 2017-02-27 21:33:25

如果你不提交,你的数据库只会在内存中增长,这将导致操作系统在你耗尽内存时开始交换,这会命中磁盘,这是很慢的。

如果您根本不需要持久性,那么使用内存中的散列映射,在这种情况下,lmdb实际上不能为您提供任何东西。如果你确实想要持久化,但不关心数据丢失,那么选择一个合理的提交(这取决于值的大小,所以实验)比率和提交,即在每1000个值之后。

如果提交的次数太少,那么只会在单个时间点产生整个磁盘访问成本,所以我认为将负载分散一点会更有意义。

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

https://stackoverflow.com/questions/37339457

复制
相关文章

相似问题

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