ヘッダーをスキップ
Oracle® OLAP DMLリファレンス
11gリリース2 (11.2)
B61346-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

SQLBLOCKMAX

SQLBLOCKMAXオプションは、Oracle Databaseインスタンスから一度に取得するレコードの最大数を制御します。このオプションによって、データ・フェッチのパフォーマンスをきめ細かくチューニングできます。

データ型

INTEGER

構文

SQLBLOCKMAX = records

パラメータ

records

一度にフェッチするレコード数を示すINTEGER。SQLBLOCKMAXは任意のINTEGERに設定できますが、100以上に設定すると、パフォーマンス上の明らかな変化は見られなくなります。デフォルトは10レコードです。

使用上の注意

カーソルのオープン

新しいブロック・サイズを使用するカーソルは、SQLBLOCKMAXのリセット後にオープンされたカーソルです。

レコード数

プログラムの通常の操作が、カーソルをオープンして1レコードを読み取ってからクローズする場合、SQLBLOCKMAXを1に設定します。このように設定しないと、SQL FETCH文は10レコードを取得してそのうちの9レコードを破棄します。同じことが、10レコード未満をフェッチする他のルーチンにも当てはまります。

ブロック・サイズ

プログラムで小さなレコードをフェッチする場合、SQLBLOCKMAXを増やしてフェッチに必要なブロック数を減らすことができます。Oracle OLAPは、データを64KBのバッファにフェッチします。ブロック・サイズは、レコード数にレコードのサイズを掛けたもので、バイトで示します。ブロック・サイズがバッファの制限である64KBを超える場合、Oracle OLAPはフェッチするレコード数を自動的に減らします。例5-98「SQLBLOCKMAXによるカーソルの定義」を参照してください。

例5-98 SQLBLOCKMAXによるカーソルの定義

次のプログラムの抜粋は、データベースから50バイトのレコードをフェッチするカーソルを定義します。新しいブロック・サイズは、Oracle OLAPの64KBのバッファに十分収まります(50バイト*100=50KBのブロック・サイズ)。

SQLBLOCKMAX = 100
SQL DECLARE CURSOR c1 FOR SELECT * FROM mydata
SQL OPEN c1