2.40 CLIENT_PREFETCH_ROWS
CLIENT_PREFETCH_ROWS
を使用すると、クライアントは、問合せ結果セットの行のフェッチ中に必要なラウンドトリップ数を減らすことができます。
特性 | 説明 |
---|---|
パラメータ・タイプ |
整数 |
デフォルト値 |
|
変更可能 |
|
PDBで変更可能 |
はい |
値の範囲 |
|
基本 |
いいえ |
CLIENT_PREFETCH_ROWS
は、クライアント・アプリケーションを変更せずに、Oracleクライアント・ドライバによってプリフェッチされる行数を指定します。クライアント・ドライバは、問合せの実行が成功するたび、データベースに送信される後続のフェッチ・リクエストごとに、プリフェッチされた行をバッファリングします。
このパラメータは、Oracle Call Interface (OCI)を使用してデータベースに接続するクライアントにのみ適用されます。
このパラメータは、すべてのプラットフォームでOracle Instant Client/Oracle Database Client 19.17 (以降)および21.8 (以降)にのみ適用されます。
CLIENT_PREFETCH_ROWS
パラメータは、ALTER
SESSION
またはALTER
SYSTEM
で設定できます。ALTER
SESSION
を使用してパラメータ値が変更された場合、新しい値は、後続の結果セット・フェッチでその特定のセッションに対して有効になります。ALTER
SYSTEM
を使用してパラメータ値が変更された場合、新しい値は、ALTER
SYSTEM
コマンドの後に作成された接続で実行される文に対して有効になります。
たとえば、CLIENT_PREFETCH_ROWS
が100に設定され、クライアント・アプリケーションが10行のフェッチを要求した場合、合計110行がクライアント・ドライバに返されます。110行中の最初の10行がアプリケーションに与えられ、クライアント・ドライバは残りの100行を内部的にバッファリングします。クライアント・アプリケーションから次の10行がフェッチされ、フェッチ反復ごとに10行がそれぞれ、クライアント・ドライバによって内部的にバッファされる100行から処理できます。このプロセスにより、データベースとの間の必要なネットワーク・ラウンドトリップの数が削減されます。この例では、11番目のフェッチで、新しいネットワーク・ラウンドトリップが発生し、結果セットが使い果たされておらず、サイクルが繰り返されているかぎり、データベースは110行の次のバッチを返します。
CLIENT_PREFETCH_ROWS
の設定に関するノート:
-
CLIENT_PREFETCH_ROWS
がゼロ以外の値に設定されている場合、その値はプリフェッチ行数のデフォルトのOCI_ATTR_PREFETCH_ROWS
値よりも優先されます。 -
OCI_ATTR_PREFETCH_ROWS
値がデフォルト以外の値に設定されている場合、プリフェッチ行数のCLIENT_PREFETCH_ROWS
値は無視されます。 -
OCIAttrSet()
でCLIENT_PREFETCH_ROWS
を使用する場合:OCI_ATTR_PREFETCH_ROWS
は、プリフェッチする最上位行の数を設定します。デフォルト値は1行です。ただし、CLIENT_PREFETCH_ROWS
が設定されている場合、プリフェッチされる最上位行の数は、次の優先順位によって決定されます。-
OCIAttrSet()
関数またはoraaccess.xml
を使用してOCI_ATTR_PREFETCH_ROWS
属性を値'1'として設定すると、データベース初期化パラメータのCLIENT_PREFETCH_ROWS
値が優先され、プリフェッチされる最上位行の数が決定されます。 -
OCIAttrSet()
関数またはoraaccess.xml
を使用してOCI_ATTR_PREFETCH_ROWS
属性を1以外の値'x'として設定すると、'x'個の最上位行がプリフェッチされ、データベース初期化パラメータCLIENT_PREFETCH_ROWS
は無視されます。 -
OCIAttrSet()
またはoraaccess.xml
を使用してOCI_ATTR_PREFETCH_ROWS
値を設定しない場合、データベース初期化パラメータのCLIENT_PREFETCH_ROWS
値が優先され、プリフェッチされる最上位行の数が決定されます。
-
-
OCIAttrGet()
でCLIENT_PREFETCH_ROWS
を使用する場合:関数
OCIAttrGet()
は、OCI_ATTR_PREFETCH_ROWS
、oraaccess.xml
およびデータベース初期化パラメータCLIENT_PREFETCH_ROWS
から設定された有効なプリフェッチ行の値を返します。OCI_ATTR_PREFETCH_MEMORY
値が設定されている場合、OCIAttrGet()
によって返される値は、最終的なプリフェッチ行の値ではない可能性があり、OCI_ATTR_PREFETCH_MEMORY
属性で指定されたメモリー値で許可される最大行数に制限される場合があります。
ノート:
このパラメータは、Oracle Database 23ai以降で使用できます。
関連項目:
結果のフェッチおよびプリフェッチ数の設定、OCI_ATTR_PREFETCH_MEMORY
およびOCI_ATTR_PREFETCH_ROWS
属性、およびOCIAttrGet()
およびOCIAttrSet()
関数の詳細は、Oracle Call Interface開発者ガイドを参照してください。