様々なOCIコールのサーバー・ラウンドトリップに関する情報は、プログラマにとって有用です。
この付録では、様々なOCIコール中に発生するサーバー・ラウンドトリップについて説明します。サーバー・ラウンドトリップ は、クライアントからサーバーに送信し、クライアントに戻るトリップとして定義されます。この情報は、プログラマがアプリケーションで特定の作業を実行するための最も効率的な方法を判断するのに役立ちます。
この付録では、次の項目について説明します。
この付録では、様々なOCIコール中に発生するサーバー・ラウンドトリップについて説明します。この情報は、アプリケーションで特定の作業を実行するための最も効率的な方法を判断するのに役立ちます。
各OCIリレーショナル関数のサーバー・ラウンドトリップの回数について説明します。
各OCIリレーショナル関数に必要なサーバー・ラウンドトリップ回数のリストを表C-1に示します。
表C-1 リレーショナル操作用のサーバー・ラウンドトリップ
関数 | サーバー・ラウンドトリップ回数 |
---|---|
|
1 |
|
1 |
|
1 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
1 |
|
1 |
|
接続プールまたはセッション・プール: OCISessionGet()と同じ 通常: 2 (認証とTAF状況に基づく) |
|
1 |
|
1 |
|
0 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
セッション・プール: 0 (ログイン数の増分)。接続プール: 1から(1+ (増分 * ログイン数))。キャッシュ・ヒットに依存: 1 (ユーザー・セッションの場合)、オプションの増分 (1次セッションの場合)。 通常: 1ログイン |
|
sessMin*ログイン数 |
|
キャッシュ内のセッション数*ログオフ数 |
|
セッション・プーリング: 0。明示的セッションがフラグ・セットを破棄したときは例外。 通常: 1ログイン |
|
1 |
|
0または1 |
|
プリフェッチで0。それ以外は1。 |
|
1 |
|
0 |
|
0 |
|
0 |
|
0 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
0 |
|
0 |
各OCI LOB関数のサーバー・ラウンドトリップ回数について説明します。
OCILob
コールで発生するサーバー・ラウンドトリップ回数のリストを表C-2に示します。
注意:
ラウンドトリップの回数を最低限に抑えるために、LOBのデータ・インタフェースを使用できます。CLOB
列の文字データまたはBLOB
列のRAW
データをバインドまたは定義できます。
ラウンドトリップの回数が0または1のコールの場合、LOBバッファリングが有効であり、要求がクライアントで完了すれば、ラウンドトリップは発生しません。
表C-2 OCILobコール用のサーバー・ラウンドトリップ
関数 | サーバー・ラウンドトリップ回数 |
---|---|
|
1 |
|
1 |
|
1 |
|
0 |
|
0 |
|
0 |
|
1 |
|
1 |
|
1 |
|
1 |
|
0 |
|
0 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
0 |
|
1 |
|
1 |
|
0 |
|
このLOBのバッファにある変更ページごとに1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
0 |
|
1 |
|
0 |
|
1 |
|
1 |
|
ソース・ロケータまたは宛先ロケータのいずれかが一時LOBを参照している場合は1ラウンドトリップ |
|
0 |
|
1 |
|
0または1 |
|
0または1 |
|
1 |
|
1 |
|
0または1 |
|
0または1 |
|
0または1 |
|
0または1 |
関連項目:
INSERT
文およびUPDATE
文の使用方法および使用例は、「LOBデータのバインドについて」を参照してください
(SELECT
文の使用方法および使用例)
オブジェクト関数およびキャッシュ関数に必要なサーバー・ラウンドトリップ回数のリストを表C-3に示します。これらの値では、キャッシュがウォームな状態であると想定しています。つまり、アプリケーションで必要な型記述子オブジェクトがすでにロードされているということです。
表C-3 オブジェクト関数およびキャッシュ関数用のサーバー・ラウンドトリップ
関数 | サーバー・ラウンドトリップ回数 |
---|---|
|
1 |
|
0 |
|
1 |
|
0 |
|
0 |
|
1 |
|
0 |
|
0 |
|
1 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0 |
|
1 |
|
0 |
|
0 |
|
0 |
|
0 |
|
1。必要なオブジェクトがすでにキャッシュにある場合は0。 |
|
0 |
|
1 |
|
1 |
|
0 |
|
0 |
|
0 |
OCIDescribeAny()
、OCIAttrGet()
およびOCIParamGet()
に必要なサーバー・ラウンドトリップ回数のリストを表C-4に示します。
表C-4 記述操作用のサーバー・ラウンドトリップ
関数 | サーバー・ラウンドトリップ回数 |
---|---|
|
型オブジェクトがオブジェクト・キャッシュにない場合は、型を記述するために2ラウンドトリップ。 各コレクション要素、各型属性、メソッドまたはメソッド引数記述子につき1ラウンドトリップ。 コレクション要素、型属性またはメソッド引数に対して 最初の |
|
型記述子オブジェクトの |
|
0 |
データ型マッピング関数および操作関数のラウンドトリップ回数のリストを表C-5に示します。表内のアスタリスクは、特定の接頭辞を持つすべての関数のサーバー・ラウンドトリップ回数が同じになることを示します。たとえば、OCINumberAdd()
、OCINumberPower()
およびOCINumberFromText()
では、サーバー・ラウンドトリップはすべて0となります。
表C-5 データ型の操作関数用のサーバー・ラウンドトリップ
関数 | サーバー・ラウンドトリップ回数 |
---|---|
|
0。コレクションがキャッシュにロードされていない場合は1。 |
|
0 |
|
0。コレクションがキャッシュにロードされていない場合は1。 |
|
0 |
|
0 |
|
0 |
|
0 |
|
0。ネストした表がキャッシュにロードされていない場合は1。 |
任意型関数および任意データ関数に必要なサーバー・ラウンドトリップ回数のリストを表C-6に示します。リストされていない関数は、ラウンドトリップを生成しません。
表C-6 任意型関数および任意データ関数のサーバー・ラウンドトリップ
関数 | サーバー・ラウンドトリップ回数 |
---|---|
|
0。型情報がキャッシュにロードされていない場合は1。 |
|
0。型情報がキャッシュにロードされていない場合は1。 |
|
0。型情報がキャッシュにロードされていない場合は1。 |
ローカルであるため、サーバー・ラウンドトリップが不要な関数のリストを表C-7に示します。
表C-7 ローカルに処理される関数
ローカル関数名 | 注意 |
---|---|
|
オブジェクト型を記述すると、このコールは、型記述子オブジェクトをフェッチするためにラウンドトリップを1回行います。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|