0

我有一个长字符串要并行查询。我想做的是将字符串解析为更小的单元,并将每个单元发送到远程数据库并获取每个单元的查询结果。

我的并行化是这样工作的:每个解析的字符串都需要查询远程数据库,所以我创建了一个线程池,并添加了几个可运行的对象来为每个解析的字符串查询数据库。但在这种情况下,我只有一个数据库实例。所以代码大致是这样的:

for (String s : bigQuery)
   // this function connects to that database instance and queries the string "s"
   queryMyDatabase(s, databaseInstance); 

不幸的是,我的线程池实现并没有提高我的查询速度,我想知道这是否是因为我只使用了一个客户端/实例。在那种情况下我需要实现一个连接池吗?我使用 CouchDB 作为远程数据库,您对连接池有什么建议吗?

4

1 回答 1

3

假设您的线程实现是正确的,问题可能是您的所有查询都共享与 DB 的相同连接。您可以尝试将每个查询专用于它自己的独立数据库连接(如果您愿意,可以从池中连接)。

另一种可能性是数据库无法足够快地处理您的请求,因此您这边的并行性不会给您太多。

于 2012-04-18T14:20:28.493 回答