我们需要读取1亿条记录,处理它们,然后将它们作为应用程序开发的一部分插入DB2表中。
我们在主键上使用索引,但不确定插入过程是否需要很长时间,如小时。
我们正在对目标表的字段名进行散列,以便跨不同节点分发数据。所以,如果我们想到字段数据的分区表/散列,那么插入我就不会有帮助
我想知道有哪些可用选项可以使用Java有效地处理1亿次有效插入DB2数据库表的记录。我们正在使用春季批次(一次批量9k记录)。
提前致谢。
答案 0 :(得分:1)
OPTION-1(Java): 我认为您可以尝试对源表进行分区。这将有很大帮助,但是会带来一些牺牲,例如您将无法更新选择分区的列。另外,您还必须选择合适的列进行分区。您不想最终得到1000个分区。相反,您想对可能没有任何关系的分段数据进行分区。例如,如果源中有CITY列,则可以尝试在CITY上进行分区。因此,如果您有50个城市的数据,最终可能会有50个分区。这很有帮助。您尝试按日期范围或一年中的季度进行分区。 这些确实对我选择数据有很大帮助,您还可以在每个分区上研究多线程。
选项2(存储过程(SP)): 您可以尝试在数据库中使用存储过程(PL / SQL),这样就不必担心Java了。 SP的速度甚至比Java的批处理还要快100倍。但是,即使您使用SP,我仍然建议尽可能对源表进行分区。