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

标签 java database multithreading threadpool

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

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

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/

相关文章:

sql-server - SQL 服务器 : achieve unique constraint except one value which can be repeated

java - 覆盖 toString 时遇到问题

java - Android - 中国生肖应用程序 - 如何攻击这个

java - Android:进度对话框错误 java.lang.NullPointerException

mysql - 评分作业 [Zaption] 数据库

mysql - 用 AM 或 PM 显示的时间戳

Java 8 流 : Converting a list of objects to a set of objects

node.js - 如何在nodejs中监听来自worker的终止信号?

python - 在循环中运行两个相互依赖的线程

c++ - c++ 11 atomic是否自动解决变量读写上的多核竞争?