云数据库OceanBase入门教程 OceanBase Fetch Size

2024-02-26 开发教程 云数据库OceanBase入门教程 匿名 4

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

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

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

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

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

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

设置提取大小

对所有 StatementPreparedStatementCallableStatementResultSet对象,可以使用以下方法来设置和获取 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_REVERSEResultSet.FETCH_UNKNOWN,如果尝试指定会导致 SQL 警告,并且设置将被忽略。