ヘッダーをスキップ
Oracle OLAP DMLリファレンス
11g リリース1(11.1)
E05732-02
  目次へ
目次
索引へ
索引

戻る
戻る
 
次へ
次へ
 

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はフェッチするレコード数を自動的に減らします。例6-101「SQLBLOCKMAXによるカーソルの定義」を参照してください。

例6-101 SQLBLOCKMAXによるカーソルの定義

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

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