我有一个很长的字符串需要并行查询。我想做的是将字符串解析成更小的单元,并将每个单元发送到远程数据库并获取每个单元的查询结果。
我的并行化工作原理如下:每个解析的字符串都需要查询远程数据库,因此我创建了一个线程池,并添加了多个可运行程序来查询数据库以查找每个解析的字符串。但在这种情况下我只有一个数据库实例。所以代码大致是这样的:
for (String s : bigQuery)
// this function connects to that database instance and queries the string "s"
queryMyDatabase(s, databaseInstance);
不幸的是,我的线程池实现并没有提高我的查询速度,我想知道这是否是因为我只使用了一个客户端/实例。在这种情况下我需要实现连接池吗?我使用 CouchDB 作为远程数据库,您对连接池有什么建议吗?
最佳答案
假设您的线程实现正确,问题可能是您的所有查询都共享与数据库的相同连接。您可以尝试将每个查询专用于它自己的、单独的数据库连接(如果您愿意,可以从池中)。
另一种可能性是数据库无法足够快地处理您的请求,因此您这边的并行性不会给您带来太多好处。
关于java - 使用线程池查询远程数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10211019/