如果只从一个线程使用LMDB,而根本不关心数据库持久性,那么有没有理由打开和关闭事务?
在一个事务中执行所有操作是否会导致性能问题?打开和关闭过多的事务是否会影响性能?
我发现,一旦LMDB数据库的容量超过可用的RAM,它的速度就会急剧下降,但无论是SSD还是CPU都不接近它们的容量。
最佳答案
如果事务未提交,则无法保证读卡器(在其他进程中)可以读取该项。写事务应该在某个时刻提交,这样数据就可以供其他读者使用。
数据库速度减慢可能只是由于非顺序写入。从这篇文章(https://ayende.com/blog/163330/degenerate-performance-scenario-for-lmdb)来看,非顺序写入需要更长的时间。