从DB2获取超过49条记录的数据需要更多时间

时间:2018-05-07 16:39:05

标签: java db2

我基本上将文本文件行数据与来自DB的数据进行比较。以下是我的步骤:

  1. 从每一行读取数据&保存在数组中。
  2. 从文本文件&中迭代每一行。从DB2获取文本文件中存在的唯一卡号的数据。
  3. 问题:当我考虑50个记录的上述比较时,它工作正常(只需29秒)并给出正确的结果。但是当我在文本文件中增加行数(即文本文件中的55-60行)时,它会执行,但会花费意外的20分钟。

    由于数据安全,我无法共享代码。

2 个答案:

答案 0 :(得分:1)

这里没有足够的真实信息来提供“答案”。我同意毛泽东的看法,逐行处理确实不可持续,但这不是这种异常行为的原因。

我假设您的方法相对天真,您可能正在为文件的每一行创建一个新的Connection对象。我怀疑发生的事情是你的DB2服务器的并发连接数达到了限制 - 50似乎是一个合理的设置。如果您这样做,请创建一个Connection对象,并将其重复用于处理的每一行。

或者,如果您为所有行重复使用相同的Connection对象,我认为DB2服务器可能有一些异常设置导致您的连接以意外方式运行,例如限制每个连接的操作数。我对DB2知之甚少,因此我无法建议任何特定的设置来查找。您可以尝试通过断开连接并重新连接每50行来解决此问题。

答案 1 :(得分:0)

您不应迭代每一行并查询数据库。

而是将cardNumbers收集到列表中,并通过以下方式从DB获取数据:

import numpy as np

aa = np.array([[np.nan, np.nan], [1.64, 0.0784]]) 
bb = [[np.nan, np.nan], [1.64, 0.0784]]

np.all(aa == bb)