我们正在尝试调试一个间歇性,不一致和(到目前为止)无法可靠重复的数据库检索错误。
我们正在下载和处理数亿行的数据。
我们正在通过Jython查询Oracle 11g,并使用以下命令从一次查询中检索100行:
rows = cur.fetchmany(100)
查询指定了我们要检索的每一列的名称,如下所示:
SELECT person_id, encounter_id, last_name, first_name, age
通常,我们返回的文件具有所需的所有行。像这样:
12341 | 432341 | Smith | Jack | 75
但是有时候我们会出错,有些行缺少一些值,类似于:
12341 | 432341 | Smith
最不寻常的是,如果我们重新运行完全相同的代码,则数据库检索错误将消失,所有缺失的值都会被写入。
由于我们正在下载的数据集的大小和删除数据的频率,这对我们来说已成为一个问题。
什么会导致像这样的值下降?如果数据库超载,这是否是已知行为?或者是超载JDBC连接中的已知缺陷?
我们如何调试此原因?