DELETE 時
2.5 XML データ検索プラグインのデータベースの作成
2.5.5 データの登録 (1) データの登録方法
作成した表にデータを登録するには,操作系 SQL の INSERT 文を使用します。登録するデータは,HiRDB をセットアップしたときの文字コードに合わせて,XML 変換ライブラリを使用して生成した ESIS-B 形式 データです。XML 変換ライブラリ,および ESIS-B 形式データの詳細については「5. XML 変換ライブ
ラリ」を参照してください。
テキスト形式の XML データで登録する場合は,INSERT 文の中で XMLPARSE 関数を使用します。ただ し,XML データに対して妥当性検証を行わない,などの制約があります。
INSERT 文,および XMLPARSE 関数の詳細についてはマニュアル「HiRDB SQL リファレンス」を参照 してください。
INSERT 文の指定例を次の図に示します。
図 2‒25 INSERT 文の指定例(ESIS-B 形式データの場合)
図 2‒26 INSERT 文の処理の例(テキスト形式 XML データの場合)
SQL による XML データ登録時に XML データのエラーを検知しても,トランザクションはロールバック しません。XML データのエラーが発生した場合,SQL(INSERT 文または UPDATE 文)による登録の ときは,SQLCODE=997 のエラーとなります。なお,エラーコード詳細化指定をしているときは,
SQLCODE=-3040 のエラーになります。また,pdload による登録のときは,該当する行の登録がスキッ プされます。
(2) 登録・検索同時実行の設定
登録・検索同時実行を設定すると,データの登録と検索の同時実行ができます。同時実行には次の利点が あります。
• ほかのユーザが更新中(トランザクションが終了していない状態)の XML データを検索できます。
• XML 型格納用 RD エリアおよび IXXML 型情報格納用 RD エリアに対してグローバルバッファを割り 当てると,登録および検索性能が向上します。
ただし,同時実行できるのは次の場合です。
• SQL による単数の更新系トランザクションと,複数の検索系トランザクションの同時実行
• インデクス未作成の場合,複数の更新系トランザクションの同時実行
• インデクス情報の取得ユティリティ,インデクス作成開始ユティリティと,検索系トランザクションの 同時実行
なお,インデクス情報の取得ユティリティの詳細については,「3.2.4 phjidxls(インデクス情報の取
得ユティリティ)
」,インデクス作成開始ユティリティの詳細については,「3.2.8 phjstartidx(インデクス作成開始ユティリティ)
」を参照してください。(a) 指定方法
XML Extension の環境設定項目,および HiRDB のバックエンドサーバ定義またはシングルサーバ定義 に,次の内容を設定します。XML Extension の環境設定項目については,「2.6 XML データ検索プラグ
インのユーザ環境設定」を参照してください。また,HiRDB のバックエンドサーバ定義またはシングル
サーバ定義の詳細については,マニュアル「HiRDB システム定義」を参照してください。XML データ検索プラグインの環境設定項目
•
XML データ型プラグインを使用している場合
XML データ型プラグインの環境設定項目「登録・検索同時実行指定」で次のように指定します。
set phd_search_wait=nowait
•
IXXML インデクス型プラグインを使用している場合
IXXML
インデクス型プラグインの環境設定項目「1RD エリア当たりの排他制御用共用メモリサイ
ズ」で次のように指定します。set phj_lock_pool_size=共用メモリサイズ
HiRDB のバックエンドサーバ定義またはシングルサーバ定義
•
IXXML インデクス型プラグインを使用している場合
IXXML インデクス型プラグインで使用する共用メモリのサイズを指定します。
HiRDB のバックエンドサーバ定義またはシングルサーバ定義のオペランド「pdplgprm」は,次の 形式で指定してください。
オペランドの指定形式
pdplgprm -n プラグイン名 -s 共用メモリサイズ
引数
-n プラグイン名
共用メモリを使用するプラグインの名称を指定します。ここでは,IXXML インデクス型プラグイ ンのプラグイン名「_phjxml」を指定してください。
-s 共用メモリサイズ
IXXML インデクス型プラグインで使用する共用メモリのサイズ(キロバイト)を指定します。
(b) 注意事項
• HiRDB が提供しているユティリティによる登録と検索系トランザクションは同時に実行できません。
• インデクス情報の取得ユティリティ,インデクス作成開始ユティリティ以外の XML Extension のユ ティリティと,検索系トランザクションは同時に実行できません。
• 同時実行を設定している場合,XML Extension のデータの整合性確保のために,一時的に排他制御を します。このため,同時実行を設定していない場合に比べて,排他制御によるオーバヘッドが掛かりま す。
•「phd_search_wait=nowait」を設定した場合は,IXXML 型を作成していない場合でも共用メモリの 定義をする必要があります。
• 同時実行する場合は,グローバルバッファを指定してください。実行性能が向上します。
• 登録・検索同時実行時に,更新系のトランザクションを複数実行した場合,排他によって wait 状態に なります。更新系トランザクションの wait 状態が解消されるまで,以降の検索処理も wait 状態にな ります。
• LOCK 文でテーブル全体を排他すると,ほかのトランザクションとの同時実行ができません。このた め,登録・検索同時実行を実施する場合は,LOCK 文でテーブル全体の排他を実施しないようにして ください。
(3) 分割遅延登録・更新系 SQL 同時実行の設定
分割遅延登録・更新系 SQL 同時実行を利用すると,「(2) 登録・検索同時実行の設定」で説明した登録・
検索同時実行の機能に加えて,さらに,データ登録とインデクス作成を同時に実行できます。
(a) 指定方法
XML データ型プラグインの環境設定項目「登録・検索同時実行」に,次のように指定します。
set phd_search_wait=nowait_with_update
(b) 注意事項
• LOCK 文でテーブル全体を排他すると,ほかのトランザクションとの同時実行ができません。このた め,分割遅延登録・更新系 SQL 同時実行を実施する場合は,LOCK 文でテーブル全体の排他を実施し ないようにしてください。
• 検索トランザクションの排他が更新系 SQL またはインデクス作成開始ユティリティと競合することを 避けるため,検索 SQL 実行時は,SQL の排他オプションに WITHOUT LOCK NOWAIT を指定し てください。インデクス作成開始ユティリティの詳細については,「3.2.8 phjstartidx(インデクス作