行のブロック化は、単一の操作で複数の行からなるブロック を取り出し、 データベース・マネージャーのオーバーヘッドを少なくするためのテクニックです。 それらの行はキャッシュに格納され、 アプリケーションの各 FETCH 要求ごとに一度に 1 行ずつ処理されます。 ブロック内の全部の行が処理されると、 別の行ブロックがデータベース・マネージャーによって取り出されます。
キャッシュは、アプリケーションが OPEN CURSOR 要求を発行する時に割り振られ、 カーソルがクローズされるときに割り振り解除されます。 キャッシュのサイズは、入出力ブロックのためのメモリーを割り振るときに使用される構成パラメーターによって決まります。 使用されるパラメーターは、 クライアントがローカルであるかリモートであるかによって異なります。
ローカル・アプリケーションの場合、 1 ブロックごとに返される行の数は下記の式で計算されます。ただし、
Rows per block = aslheapsz * 4096 / orl
リモート・アプリケーションの場合、 1 ブロックごとに返される行の数は下記の式で計算されます。ただし、
Rows per block = rqrioblk / orl
SELECT ステートメントの中で、FETCH FIRST n ROWS ONLY 文節、 または OPTIMIZE FOR n ROWS 文節を使用した場合、 1 ブロック当たりの行数は、以下の 2 つの値のうち小さい方になります。
PREP コマンドと BIND コマンドで BLOCKING オプションを使用すると、 以下のいずれかの種類の行ブロック化を指定できます。
ここに示したタイプの行ブロック化の詳細については、 コマンド解説書 の中の PREP コマンドと BIND コマンドの説明を参照してください。
PREP および BIND コマンドにオプションを何も指定しない場合、 省略時の行ブロック化タイプは UNAMBIG になります。 コマンド行プロセッサーおよびコール・レベル・インターフェースの場合、 省略時の行ブロック化は ALL です。
カーソルの詳細については、SQL 解説書 を参照してください。