Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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 - Fatal编程技术网

利用多线程程序通过java从数据库中读取海量数据集

利用多线程程序通过java从数据库中读取海量数据集,java,Java,在我的项目中,我正在生成一份报告。这涉及到来自数据库的巨大数据传输 逻辑就像用户会给出某些条件,根据这些条件,我们将首先从数据库中获取父项。可能有100000个父项。不仅如此,在获取这些项之后,我们还将收集这些父项的子项,并提供详细信息。所有这些都是为了收集父和子信息,我们将它们放在一个响应xml中 小唱片也可以。但是对于巨大的记录来说,这需要更多的时间。我们使用一个工具作为后端系统。它存储记录。它有自己的查询集,所以查询优化不起作用。我们所要做的就是用java 团队中的任何人都能给出一些如何优

在我的项目中,我正在生成一份报告。这涉及到来自数据库的巨大数据传输

逻辑就像用户会给出某些条件,根据这些条件,我们将首先从数据库中获取父项。可能有100000个父项。不仅如此,在获取这些项之后,我们还将收集这些父项的子项,并提供详细信息。所有这些都是为了收集父和子信息,我们将它们放在一个响应xml中

小唱片也可以。但是对于巨大的记录来说,这需要更多的时间。我们使用一个工具作为后端系统。它存储记录。它有自己的查询集,所以查询优化不起作用。我们所要做的就是用java


团队中的任何人都能给出一些如何优化的想法。

这不是一个真正的答案,但太长了,无法发表评论

您必须对不同的步骤进行基准测试:

database-time a select直接提取数据库上的所有记录parents+Child(假设它是一个简单的数据库) 网络时间是整个记录大约大小的传输。 处理-将结果存储在本地文件上,并计算从本地文件读取的处理时间。您还必须计算文件副本的时间,以了解从磁盘读取的时间
多线程只有在处理瓶颈时才有帮助。

您计划改进什么?系统中存在哪些瓶颈?若磁盘系统运行缓慢,多线程可能不会如此大程度地提高速度。如果使用多个数据库,对数据库的多线程并发访问可能会大大提高速度。这一切都取决于您的系统结构和部件、数据库、网络、磁盘等的特征。您确实需要查看速率限制步骤。仅仅从阅读你的帖子就有点难说了。哪一步最慢?这个问题?XML的创建?java处理?通过网络传输?谢谢,我已经检查了它所花费的时间。当我们收集父对象信息时,它不会花费太多时间。但是当我们收集每个父对象的子项详细信息时,它会花费时间。您是否使用ORM框架或纯SQL与JDBC进行通信?我真的希望它是第二个视图:然后您可以尝试构建一个视图来显示构建XML所需的所有信息。此外,请检查您的表是否具有所有必需的索引,包括查询计划器子系统可以使用的复合索引。最后,您可以将单个视图按父视图的子集(比如说按父视图的出生年份)拆分,并让线程处理自己的视图,生成自己的xml部分。最后一个过程将把所有部分合并到一个结果文件中。谢谢,我们没有使用任何ORM。在后端,我们使用的产品实际上存储了所有信息。这就是为什么我们无法进行任何查询优化。