Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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 以最有效的方式从数据库获取大量数据_Java_Database_Multithreading_Performance - Fatal编程技术网

Java 以最有效的方式从数据库获取大量数据

Java 以最有效的方式从数据库获取大量数据,java,database,multithreading,performance,Java,Database,Multithreading,Performance,在我的应用程序中,我必须读取大量数据。在我获得所有数据后,我将其放入一个列表中,并对其进行处理,然后进行相应的工作 现在我想知道我是否可以做任何事情,任何事情来加速从数据库获取数据的过程?我的数据库位于不同的服务器上,我正在使用java与数据库交互 我没有确定的数据大小,即需要处理的特定行数。我还听说我可以使用多线程,但那怎么做呢?因为我不知道如何划分我的数据,因为它是不确定的。i、 e.如果要应用以下伪代码 for(i=0 to number of partition) // Not cert

在我的应用程序中,我必须读取大量数据。在我获得所有数据后,我将其放入一个列表中,并对其进行处理,然后进行相应的工作

现在我想知道我是否可以做任何事情,任何事情来加速从数据库获取数据的过程?我的数据库位于不同的服务器上,我正在使用java与数据库交互

我没有确定的数据大小,即需要处理的特定行数。我还听说我可以使用多线程,但那怎么做呢?因为我不知道如何划分我的数据,因为它是不确定的。i、 e.如果要应用以下伪代码

for(i=0 to number of partition) // Not certain on the number of partitions
    create new thread and get data.
或者我可以根据某个属性散列数据,然后告诉每个线程获取映射的特定索引,但是在获取数据之前如何映射它呢

我可以研究哪些可能的解决方案?我该如何着手?如果你需要更多信息,请告诉我

谢谢

我听说我可以使用多线程,但那怎么做呢

这无疑是加快从远程服务器查询信息速度的一个好选择。
通常在这些任务中,服务器的IO是主要的瓶颈,通过多线程,可以同时“请求”多行,有效地减少IO等待时间

那你怎么办呢

想法是将工作分成更小的任务。查看java以了解更多详细信息。
一种解决方案是让每个线程从服务器读取一个大小为
M
的块,并在每个线程(服务器)中仍有数据时对其重复该过程。类似的内容(对于每个线程):

我在此假设,一旦您“越界”,服务器将返回
null
(或
requestChunk()
处理它并返回null)

或者我可以根据一些属性散列数据,然后告诉你 每个线程都可以获取映射的特定索引

如果需要迭代数据并检索所有数据,哈希通常是一个糟糕的解决方案。它的缓存效率非常低,而且这种情况下的开销太大

我听说我可以使用多线程,但那怎么做呢

这无疑是加快从远程服务器查询信息速度的一个好选择。
通常在这些任务中,服务器的IO是主要的瓶颈,通过多线程,可以同时“请求”多行,有效地减少IO等待时间

那你怎么办呢

想法是将工作分成更小的任务。查看java以了解更多详细信息。
一种解决方案是让每个线程从服务器读取一个大小为
M
的块,并在每个线程(服务器)中仍有数据时对其重复该过程。类似的内容(对于每个线程):

我在此假设,一旦您“越界”,服务器将返回
null
(或
requestChunk()
处理它并返回null)

或者我可以根据一些属性散列数据,然后告诉你 每个线程都可以获取映射的特定索引


如果需要迭代数据并检索所有数据,哈希通常是一个糟糕的解决方案。缓存效率非常低,这种情况下开销太大。

我们讨论的数据量是多少?您可以在数据库中执行一些处理吗?当前的瓶颈是什么?我认为,多线程获取数据是一个不错的选择。您可以创建一个模型,在该模型中,您需要提供单个线程要获取的记录总数。我们讨论的是多少数据?您可以在数据库中执行一些处理吗?当前的瓶颈是什么?我认为,多线程获取数据是一个不错的选择。您可以创建一个模型,在该模型中,您需要提供单个线程要获取的记录总数。我在这里讨论多线程吗?请查看伪代码。我能做什么?谢谢,我应该在这里讨论多线程吗?请查看伪代码。我能做什么?谢谢
data = "start";
int chunk = threadNumber;
while (data != null) {
  requestChunk(chunk);
  chunk += numberOfThreads;
}