codecamp

OceanBase Fetch Size

可以使用 Fetch Size 更改行获取值来更改每次访问数据库游标时检索的行数。

默认情况下,OceanBase Connector/J 运行查询时,默认一次从数据库游标中检索 10 行的结果集。

使用标准 JDBC,还可以指定每次查询数据库往返所获取的行数,该数量称为 Fetch Size。在 OceanBase Connector/J 中,行预取值为语句对象中的默认访存大小。设置访存大小会覆盖行预取值设置,并影响该语句对象的后续查询。

Fetch Size 也用于结果集中。当语句对象运行查询时,语句对象的 Fetch Size 将传递给查询的结果集对象。但是,您也可以在结果集对象中设置访存大小,以覆盖传递给它的语句访存大小。

注意 
生成结果集后,对语句对象的 Fetch Size 所做的更改对该结果集不会产生影响。

结果集的 Fetch Size,无论是显式设置的,还是默认等于传递给它的语句 Fetch Size,都可以确定后续对该结果集进行数据库访问时检索到的行数。这包括完成原始查询仍然需要的所有行程,以及将数据重新提取到结果集中的所有行程。可以显式或隐式地重新获取数据,以更新对回滚敏感或对回滚不敏感/可更新的结果集。

设置提取大小

对所有 StatementPreparedStatementCallableStatement 和 ResultSet 对象,可以使用以下方法来设置和获取 Fetch Size:

  • void setFetchSize(int rows) throws SQLException

  • int getFetchSize() throws SQLException

要设置查询的 Fetch Size,请在运行查询之前在语句对象上调用 setFetchSize。如果将 Fetch Size 设置为 N,则每次访问数据库时都会获取 N 行。

运行查询后,可以在结果集对象上调用 setFetchSize 来覆盖传递给它的语句对象访存大小。这将影响到数据库的后续行程,为原始查询获取更多行,并影响以后的行重取。

预设提取方向

标准 JDBC 驱动可以预先指定用于处理结果集的方向(称为提取方向)。结果集设置方法如下:

  • void setFetchDirection(int direction) throws SQLException

  • int getFetchDirection() throws SQLException

OceanBase Connector/J 仅支持向前的预设值,可以通过输入 ResultSet.FETCH_FORWARD 静态常量值来指定该值。

不支持值 ResultSet.FETCH_REVERSE 和 ResultSet.FETCH_UNKNOWN,如果尝试指定会导致 SQL 警告,并且设置将被忽略。


OceanBase 限制和降级规则
OceanBase 重取行
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

OceanBase 控制台指南

OceanBase ODC 使用指南

OceanBase Web 版 ODC

OceanBase 客户端版 ODC

OceanBase Connector/J 开发者指南

OceanBase 什么是OceanBase Connector/J

OceanBase SQL 参考(MySQL 模式)

OceanBase SQL 参考(Oracle 模式)

OceanBase 基本元素

OceanBase 数据库对象

OceanBase 函数

OceanBase 单行函数

OceanBase 返回数字的字符串函数

OceanBase 通用比较函数

OceanBase 编码解码函数

OceanBase SQL 调优指南

OceanBase 相关协议

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }