使用 OPTOFC 参数优化 GBase 8s JDBC

发布: (2026年5月3日 GMT+8 22:15)
3 分钟阅读
原文: Dev.to

Source: Dev.to

当 OPTOFC 生效时

仅在满足 以下全部 条件时才会应用此优化:

  • 语句是 PreparedStatement 实例。
  • 查询是 SELECT
  • ResultSet 类型为 TYPE_FORWARD_ONLY
  • 并发模式为 CONCUR_READ_ONLY

它的作用

  • 合并 OPEN 与 FETCH 消息 – 通常这两个是分开的网络请求。使用 OPTOFC 后,它们会一起发送,省去一次往返。(对于可变长度列,驱动可能已经自行合并;设置 OPTOFC=1 强制合并。)
  • 自动关闭游标 – 当所有行都已从服务器取回,服务器会自动关闭游标。随后调用 ResultSet.close() 就不会产生额外的网络请求。

如何启用

在 JDBC URL 中加入 OPTOFC=1

jdbc:gbasedbt-sqli://192.168.226.180:12888/testdb:OPTOFC=1

性能基准

测试在循环中执行同一条 SELECT * 查询 1,000 次。使用了两张表:

  • t1(name varchar(10)) – 可变长度列
  • t2(name char(10)) – 固定长度列

示例 1 — 固定长度列 (char)

配置时间
不使用 OPTOFC2,822 ms
使用 OPTOFC=11,697 ms≈ 40 % 更快

示例 2 — 可变长度列 (varchar)

配置时间
不使用 OPTOFC2,276 ms(基准更低,因为默认对 varchar 已合并 OPEN/FETCH)
使用 OPTOFC=11,679 ms — 仍然约 26 % 更快

示例 3 — 当它 不起作用 时 (TYPE_SCROLL_INSENSITIVE)

URL 中已包含 OPTOFC=1,但 ResultSet 类型被设为 TYPE_SCROLL_INSENSITIVE,导致第 3 条条件失效。执行时间仍为 2,848 ms,与未优化路径相同。

关键要点

OPTOFC=1 为前向、只读的 SELECT 查询(尤其是涉及可变长度列时)提供了可观的加速。只需修改 URL,无需更改代码,即可为多数 GBase 8s 应用带来低成本的性能提升。

如果你在 JDBC 工作负载中使用 GBase 8s,请检查你的 ResultSet 类型和连接字符串——你可能正在浪费本可以获得的性能。

0 浏览
Back to Blog

相关文章

阅读更多 »