首页 > 解决方案 > 读取大量记录 (Batch READ) DB2

问题描述

嗨,我需要按顺序读取,而不需要过多地从 DB2 表中过滤大量数据。为了并行化 READ,我首先从具有良好基数(没有太多重复)的索引中读取所有元素,然后将它们划分为 100 个列表,然后使用

SELECT from TABLE where mycolumn in ('value1','value2'....'value100') with UR

打开跟踪某些 SQL 后,它会显示为 5000 条记录的结果集提供服务:

User CPU: 0.032192 seconds
System CPU: 0.003841 seconds

DB2 在 SSD 驱动器上。为什么需要 32ms 的用户时间?

在 Java 端,我已配置 JDBC 驱动程序以使用ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY

更详细一点,我需要用数据快速填充内存结构。为此,我需要能够从数据库中快速读取数据。

是不是 DB2 缓冲区设置得太低了?有什么建议么 ?

标签: sqlperformancedb2rdbms

解决方案


尝试以下方法:

Select *
from TABLE t
where mod(mycolumn, N)=x

N - 并行流数
x - [0, N-1] - 流数

如果您的mycolumnwith 基数不够高,请尝试使用rid(t)表达式而不是mycolumn.

摆脱功能参考。


推荐阅读