使用线程池查询远程数据库

时间:2012-04-18 14:01:55

标签: java database multithreading threadpool

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

我的并行化工作方式如下:每个解析后的字符串都需要查询远程数据库,因此我创建了一个线程池,并添加了几个可查询数据库以查找每个已解析字符串的runnable。但在这种情况下我只有一个数据库实例。所以代码大致如下:

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

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

1 个答案:

答案 0 :(得分:3)

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

另一种可能性是DB无法足够快地处理您的请求,因此并行性并不会给您带来太大的影响。