从java连接到多个sql server数据库

时间:2012-05-30 01:43:20

标签: java sql-server-2008 multiple-databases

我有一些数据要从多个sql server数据库(如200)中读取。每个数据库中都会有10个表,我需要从中读取数据,如何使用java以最佳方式执行此操作?

提前致谢

2 个答案:

答案 0 :(得分:1)

拯救并发。

要为繁重的工作负载实现最佳吞吐量,请从一开始就将应用程序编写为多线程,然后根据性能限制,您可以加快速度或限制它。

ExecutorService是一种以可扩展方式分解任务的好方法。我建议您将每个数据库导入任务定义为Callable,然后从ExecutorService“调用”所有任务。

我会做这样的事情:

List<YourCallableImportJobs> work= yourFactory.getAllWork();
// this variable can be used to tweak performance. 
// Begin with a low number and then ramp it up if it's too slow.
int nThreads=10;     
ExecutorService service = ExecutorService.newFixedThreadPool(nThreads);
List<Future<T>> futures= service.invokeAll(work);

您可以轮询Futures以检查工作何时完成......

最后,如果您希望并发访问每个数据库(特别是目标数据库),我建议使用连接池机制,例如C3PO。这意味着您不会花太多时间打开和关闭连接。 (您甚至可以将每个导入分解为单个查询 - 这时连接池也会有所帮助。)

希望这有帮助

答案 1 :(得分:0)

维护一个数据库连接队列,使用这些数据库的ipaddresses,使用多线程连接到每个数据库,现在当数据库完成工作时,关闭该数据库的连接并从队列中删除连接。