Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java连接到多个sql server数据库_Java_Sql Server 2008_Multiple Databases - Fatal编程技术网

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

从java连接到多个sql server数据库,java,sql-server-2008,multiple-databases,Java,Sql Server 2008,Multiple Databases,我有一些数据要从多个sql server数据库(如200)中读取。在这些数据库中,每个数据库中都有10个表,我需要从中读取数据,我如何使用java以最好的方式做到这一点 提前感谢维护数据库连接队列,使用这些数据库的IP地址,使用多线程连接到每个数据库,现在当数据库的工作完成时,关闭该数据库的连接并从队列中删除连接。维护数据库连接队列,使用这些数据库的IP地址,使用多线程连接到每个数据库,现在当数据库的工作完成时,关闭该数据库的连接并从队列中删除连接。并发到救援 要为繁重的工作负载实现最佳吞吐量,

我有一些数据要从多个sql server数据库(如200)中读取。在这些数据库中,每个数据库中都有10个表,我需要从中读取数据,我如何使用java以最好的方式做到这一点


提前感谢

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

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

并发到救援

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

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

我会这样做:

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);
List work=yourFactory.getAllWork();
//此变量可用于调整性能。
//从一个较低的数字开始,如果速度太慢,则将其调高。
int=10;
ExecutorService=ExecutorService.newFixedThreadPool(n线程);
List futures=service.invokeAll(工作);
您可以轮询以检查工作何时完成

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


希望这有助于营救并发性

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

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

我会这样做:

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);
List work=yourFactory.getAllWork();
//此变量可用于调整性能。
//从一个较低的数字开始,如果速度太慢,则将其调高。
int=10;
ExecutorService=ExecutorService.newFixedThreadPool(n线程);
List futures=service.invokeAll(工作);
您可以轮询以检查工作何时完成

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


希望这有帮助

听起来像是Hadoop的一个例子?你最担心的是什么?速度记忆?还有什么吗?它需要相当的速度,这将是一个夜间导入过程,将在2-3小时内完成,还有4个其他应用程序需要从夜间导入到我们的应用程序中,数据大小为100 Mbs。听起来像是Hadoop的例子?您最担心的是什么?速度记忆?还有什么吗?它需要相当的速度,这将是一个夜间导入过程,将在2-3小时内完成,还有4个其他应用程序需要从夜间导入到我们的应用程序中,数据大小为100 Mbs。感谢Amir提供的解决方案,我将尝试这一点。感谢Amir提供的解决方案,我将尝试这一点。