0

我的系统中使用 Java Berkeley DB 来存储持久数据。

由于要加载大量数据,因此我尝试使用多个线程来执行此操作。当线程数较少时,例如 10,它可以正常工作。然而,当它被设置为更高的值,例如,30 时,读取过程会卡住。看起来 Java Berkeley DB 有并发读取的上限?我对吗?我将如何更新限制?

4

1 回答 1

0

你是不是说...“要加载?”

嗯,你以为你做到了!

因此,您所说的线程不是“读取”线程:它们是“写入”线程!

而且,你猜怎么着:他们在互相竞争,你猜怎么着,他们输了!

不幸的是,您通过使用线程来加快速度的“尝试”是(恕我直言……) “真诚,但被误导了”。归根结底,Berkely DB 是“一个单一的磁盘数据结构”,因此(恕我直言……) 没有机会通过使用多线程来加速进程。

不过,其他各种策略可能会奏效。例如,您可能会发现,如果您通过一些适当的外部命令对要插入的记录进行排序,那么插入这些记录的过程可能会变得“有用(更快?)更快”。换句话说,速度差异足以弥补(!)花费在排序上的时间。(但是,只有一种方法可以确定您的情况是否属实:“基准测试、使用实际数据、实际排序命令等。”)

于 2016-07-06T02:29:42.563 回答