OceanBase Fetch Size

2021-06-30 15:56 更新

可以使用 Fetch Size 更改行獲取值來(lái)更改每次訪問(wèn)數(shù)據(jù)庫(kù)游標(biāo)時(shí)檢索的行數(shù)。

默認(rèn)情況下,OceanBase Connector/J 運(yùn)行查詢時(shí),默認(rèn)一次從數(shù)據(jù)庫(kù)游標(biāo)中檢索 10 行的結(jié)果集。

使用標(biāo)準(zhǔn) JDBC,還可以指定每次查詢數(shù)據(jù)庫(kù)往返所獲取的行數(shù),該數(shù)量稱為 Fetch Size。在 OceanBase Connector/J 中,行預(yù)取值為語(yǔ)句對(duì)象中的默認(rèn)訪存大小。設(shè)置訪存大小會(huì)覆蓋行預(yù)取值設(shè)置,并影響該語(yǔ)句對(duì)象的后續(xù)查詢。

Fetch Size 也用于結(jié)果集中。當(dāng)語(yǔ)句對(duì)象運(yùn)行查詢時(shí),語(yǔ)句對(duì)象的 Fetch Size 將傳遞給查詢的結(jié)果集對(duì)象。但是,您也可以在結(jié)果集對(duì)象中設(shè)置訪存大小,以覆蓋傳遞給它的語(yǔ)句訪存大小。

注意 
生成結(jié)果集后,對(duì)語(yǔ)句對(duì)象的 Fetch Size 所做的更改對(duì)該結(jié)果集不會(huì)產(chǎn)生影響。

結(jié)果集的 Fetch Size,無(wú)論是顯式設(shè)置的,還是默認(rèn)等于傳遞給它的語(yǔ)句 Fetch Size,都可以確定后續(xù)對(duì)該結(jié)果集進(jìn)行數(shù)據(jù)庫(kù)訪問(wèn)時(shí)檢索到的行數(shù)。這包括完成原始查詢?nèi)匀恍枰乃行谐?,以及將?shù)據(jù)重新提取到結(jié)果集中的所有行程。可以顯式或隱式地重新獲取數(shù)據(jù),以更新對(duì)回滾敏感或?qū)貪L不敏感/可更新的結(jié)果集。

設(shè)置提取大小

對(duì)所有 StatementPreparedStatement、CallableStatement 和 ResultSet 對(duì)象,可以使用以下方法來(lái)設(shè)置和獲取 Fetch Size:

  • void setFetchSize(int rows) throws SQLException

  • int getFetchSize() throws SQLException

要設(shè)置查詢的 Fetch Size,請(qǐng)?jiān)谶\(yùn)行查詢之前在語(yǔ)句對(duì)象上調(diào)用 setFetchSize。如果將 Fetch Size 設(shè)置為 N,則每次訪問(wèn)數(shù)據(jù)庫(kù)時(shí)都會(huì)獲取 N 行。

運(yùn)行查詢后,可以在結(jié)果集對(duì)象上調(diào)用 setFetchSize 來(lái)覆蓋傳遞給它的語(yǔ)句對(duì)象訪存大小。這將影響到數(shù)據(jù)庫(kù)的后續(xù)行程,為原始查詢獲取更多行,并影響以后的行重取。

預(yù)設(shè)提取方向

標(biāo)準(zhǔn) JDBC 驅(qū)動(dòng)可以預(yù)先指定用于處理結(jié)果集的方向(稱為提取方向)。結(jié)果集設(shè)置方法如下:

  • void setFetchDirection(int direction) throws SQLException

  • int getFetchDirection() throws SQLException

OceanBase Connector/J 僅支持向前的預(yù)設(shè)值,可以通過(guò)輸入 ResultSet.FETCH_FORWARD 靜態(tài)常量值來(lái)指定該值。

不支持值 ResultSet.FETCH_REVERSE 和 ResultSet.FETCH_UNKNOWN,如果嘗試指定會(huì)導(dǎo)致 SQL 警告,并且設(shè)置將被忽略。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)