ここでは,性能向上と操作性向上に関して UAP 設計時に考慮する点の中で,特に HiRDB サーバを使用す る場合と XDM/RD E2 を使用する場合で差異がある項目について説明します。
その他の性能向上,および操作性向上に関する UAP 設計については,マニュアル「HiRDB Version 9 UAP 開発ガイド」を参照してください。
3.3.1 配列を使用した FETCH 機能
XDM/RD E2 のバージョンによって,配列を使用した FETCH 機能を使用できる場合とできない場合があ ります。配列を使用した FETCH 機能を使用できるバージョンを次に示します。
配列を使用した FETCH 機能を使用できるバージョン XDM/RD E2 08-00 以降
3.3.2 複数接続機能
(1) 機能概要
複数接続機能は,HiRDB クライアントで一つの UAP から,XDM/RD E2 に対して複数の CONNECT を 別々に実行できるようにする機能です。
複数接続機能のそれぞれの接続は独立していて,DB コネクションサーバのタスクは接続ごとに割り当てら れて別々のトランザクション(別々のアクティビティ)として処理されるので,UAP は複数の SQL 文を 同時に実行できます。一つの UAP から複数接続できるので,実行する UAP の数を削減でき,全体として の UAP のメモリ所要量を削減できます。
XDM/RD E2 の最大接続数は,接続ごとに別ユーザとしてカウントされるので,ユーザ数の上限ではなく,
同時に CONNECT する接続数の上限となります。
複数接続機能の特長を次に示します。
• 接続ごとに,異なるユーザ ID,パスワードを使用できます。
• 接続ごとに,複数の XDM/RD E2 へ接続できます。環境変数グループを使用する場合は,ほかの HiRDB サーバと同時に接続することもできます。
複数接続機能の処理概要を図 3-2 および図 3-3 に示します。
図 3‒2 複数接続機能の処理概要(マルチスレッドを使用しない場合)
図 3‒3 複数接続機能の処理概要(マルチスレッドを使用する場合)
(2) コーディング例
複数接続機能を使用した場合の UAP のコーディング例については,マニュアル「HiRDB Version 9 UAP 開発ガイド」を参照してください。
(3) 規則
• 複数接続機能を使用する場合は,UAP のコンパイルおよびリンケージ時に専用のライブラリを指定す る必要があります。
複数接続機能を使用する場合のコンパイルとリンケージについては,マニュアル「HiRDB Version 9 UAP 開発ガイド」を参照してください。
• X/Open XA インタフェース環境下での複数接続機能については,マニュアル「HiRDB Version 9 UAP 開発ガイド」を参照してください。
• 複数接続機能用ライブラリを使用する UAP では,一つの接続を保持したままスレッドを分岐し,その スレッドが SQL を実行する場合,ほかの SQL を発行するスレッドとの間で処理のシリアライズを必要 とします。したがって,同一接続に対する SQL は同時に発行できません。異なる接続に対する SQL は 同時に発行できます。
• ALLOCATE CONNECTION HANDLE,FREE CONNECTION HANDLE のエラー情報を参照す る場合,SQLCODE,SQLERRM ではなく,リターンコード受け取り変数の値を参照してください。
リターンコード受け取り変数については,マニュアル「HiRDB Version 9 SQL リファレンス」を参照 してください。
• 各接続で発行する SQL は,XDM/RD E2 上ではそれぞれ別のアクティビティとして扱われます。
このため,ほかの接続で排他されている資源を別の接続で排他しようとした場合に,永久的な排他待ち になることがありますので注意してください※1。
また,スレッド間で発行する SQL の組み合わせによってデッドロックエラーになる場合がありますの で注意してください※2。
注※1 例を次に示します。
1. 接続 1 が表 1 を更新
2. 同一スレッド内で,接続 2 が表 1 を更新
項番 2.の操作が項番 1.の操作を排他待ちする場合があり,この場合時間監視の制限値まで待ち続け ることになります。
注※2 例を次に示します。
1. スレッド 1 で表 1 を更新 2. スレッド 2 で表 2 を更新 3. スレッド 2 で表 1 を更新 4. スレッド 1 で表 2 を更新
項番 3.の操作が項番 1.の操作を排他待ちし,項番 4.の操作が項番 2.の操作を排他待ちする場合があ り,デッドロックとなります。
• SQL 連絡領域を参照する場合,直接 SQLCA を参照しないで,SQLC で始まる連絡領域名を参照して ください。
(4) プラットフォームによる注意事項
複数接続機能を使用する場合,UAP が動作するプラットフォームによって次のことに注意する必要があり ます。次の注意が守られていない場合,UAP の実行時に不正な動作をする可能性があります。
(a) UNIX の場合
複数接続機能は,マルチスレッド(DCE スレッド,リアルスレッド)およびシングルスレッド対応の UAP で使用できます。したがって,マルチスレッド対応の UAP で複数接続機能を使用する場合,HiRDB での UAP の開発知識のほかに,DCE スレッド,リアルスレッドを用いた UAP の開発知識を必要とします。
(b) HP-UX の場合
UAP 開発では,HiRDB/Developer's Kit のほかに,HP-UX の DCE アプリケーションの開発キットをイ ンストールする必要があります。
• UAP の各ソースファイルは,HP-UX の DCE アプリケーションの開発キットのインストールの際に作 成される,pthread.h を必ずインクルードしてください。
• UAP のリンケージの際に使用する,C のランタイムライブラリには libc_r.sl を指定してください。こ のとき,DCE のライブラリ(libdce.sl)の指定も必要です。
(c) Windows の場合
複数接続機能は,マルチスレッド対応 UAP でだけ使用できます。したがって,UAP のコンパイルで使用 する C のランタイムライブラリの指定は,マルチスレッド.DLL を選択してください(「コンパイルオプ ション:コード生成」で,「マルチスレッド.DLL」を指定します)。
3.3.3 位置付け子機能
XDM/RD E2 のバージョンによって,位置付け子機能を使用できる場合とできない場合があります。位置 付け子機能を使用できるバージョンを次に示します。
位置付け子機能を使用できるバージョン XDM/RD E2 11-00 以降
なお,CLOB 型の位置付け子機能を使用できるのは,XDM/RD E2 接続の場合だけです。HiRDB サーバ 接続の場合は使用できません。