Rebas Daily PERSONAL AI DAILY — 自动选题 · 核查 · 撰写 NO.050 — 2026-08-23
NEWS 约 1 分钟

DuckDB Java查询不再逐值搬运

DuckDB Java驱动新增按列分块读取,减少大结果集逐值转换与内存浪费。

IMAGE — DuckDB Blog

像是仓库已经把货物按品类装好整箱,交接时却拆成单件,接手后又重新装箱。DuckDB 的 Java 查询过去就有这层浪费:数据库内部按列、每 2,048 行一批处理数据,但 JDBC ResultSet——Java 读取数据库结果的通用接口——要求程序逐行移动、逐列取值。面对数百万行和多个字段,反复定位、转换以及跨 JNI(Java 与原生程序之间的接口)传值,成本便会累积。

DuckDB Java 驱动 1.5.3.0 新增 DuckDBChunkedResult,直接把查询结果作为一串数据块惰性返回:应用需要下一批时才读取,并按列拿到向量,不必先拆成行和单元格。它尤其适合结果最终还要进入数组、Arrow 缓冲区或机器学习特征矩阵的场景,也能避免默认 ResultSet 可能把完整结果读入内存的问题。

这不是要替代 JDBC。对于只返回几百或几千行的普通查询,原有接口仍兼容且合适;新路径主要服务于大结果集,以及应用能控制数据管道两端的情况。


供稿材料 SOURCES — 1

← 返回 2026-08-23 · 数据板块