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,都可以确定后续对该结果集进行数据库访问时检索到的行数。这包括完成原始查询仍然需要的所有行程,以及将数据重新提取到结果集中的所有行程。可以显式或隐式地重新获取数据,以更新对回滚敏感或对回滚不敏感/可更新的结果集。
设置提取大小
对所有 Statement
、PreparedStatement
、CallableStatement
和 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 警告,并且设置将被忽略。