Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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_Perl_Shell_Oracle11g_Ibatis - Fatal编程技术网

Java 如何处理海量数据?

Java 如何处理海量数据?,java,perl,shell,oracle11g,ibatis,Java,Perl,Shell,Oracle11g,Ibatis,使用的数据库:Oracle 11g 操作系统:红帽linux 使用的技术:Java和Ibatis 说明: 有两张表(表A和表B) TableA有超过100000条记录(12-15列) TableB有超过1000000条记录(40-45列) 需要用表B中的第1列检查表A中的第1列、第2列、第3列和第4列值 如果它在tableB中可用,那么我需要更新tableA中的其他列 如何做到这一点 问题: 目前,我们已经使用java/Ibatis完成了这项工作。我们经常会遇到java堆空间问题,因为它包含

使用的数据库:Oracle 11g

操作系统:红帽linux

使用的技术:Java和Ibatis

说明:

  • 有两张表(表A和表B)
  • TableA有超过100000条记录(12-15列)
  • TableB有超过1000000条记录(40-45列)
  • 需要用表B中的第1列检查表A中的第1列、第2列、第3列和第4列值
  • 如果它在tableB中可用,那么我需要更新tableA中的其他列
如何做到这一点

问题:

目前,我们已经使用java/Ibatis完成了这项工作。我们经常会遇到java堆空间问题,因为它包含在crontab中,每30分钟它就会处理数据并使环境变慢

目前的做法:

  • 来自表A-参考号、用户名、年龄和状态,其中使用以下查询获取 从状态为“失败”的表A中选择referenceno、name、age和status。 它几乎返回20lac行,并存储在arraylist中

  • 从arraylist中,将每一行与下表中的referenceno、name、age进行比较 从表B中选择count(*),其中refereveno=tableA.referenceno,name=tableA.name,age=tableA.age,deleteflag='N'。(如上所述,表B几乎有40条LAC记录)

  • 如果上面的查询返回1,那么它将更新tableA,状态为PASSED

    如果返回(1),它将更新tableA,状态为FAILED,备注为“找到多个匹配项”


希望使用shell脚本/perl可以完成这项工作?请建议最好的方法做这件事

我建议编写PL/SQL存储过程,这应该是最快的方法—Oracle数据库不需要向java应用程序发送数据


您可以通过oracle作业机制安排此类PL/SQL过程。

您的描述中的哪一部分是您一直坚持的?现在更新了问题,并提供了更多信息,希望您现在能够了解上下文!!!!!!!!