sql - 读取大量记录 (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 缓冲区设置得太低了?有什么建议么 ?
解决方案
尝试以下方法:
Select *
from TABLE t
where mod(mycolumn, N)=x
N - 并行流数
x - [0, N-1] - 流数
如果您的mycolumn
with 基数不够高,请尝试使用rid(t)
表达式而不是mycolumn
.
摆脱功能参考。
推荐阅读
- python - 如何在 VSCode 中显示/预览 python 文档字符串?
- html - 如何使文化设置与 Blazor WebAssembly 中的操作系统设置相匹配?
- flutter - 我的代码中有什么错误让我“一个被解雇的 Dismissible 小部件仍然是树的一部分”?
- java - 如何使用 GoogleCedentials 而不是已弃用的 GoogleCedential 初始化 Google 驱动器
- python - 填写dict的更好方法?
- r - 有没有一种简单的方法可以在 R 中反转数据框中的日期?
- javascript - 为什么 '1' + '2' - 3 给出 9?
- scala - Cats Scala中的序列和遍历以映射类型
- visual-studio - Visual Studio 19 没有将正确的输入传递给 powershell 脚本
- bind - svelte:如何显示列表中每个元素的道具 ID