2.7.5 データの登録
(1) データの登録方法
作成した表にデータを登録するには,操作系SQLのINSERT文を使用します。登録する文字列データは,HiRDBをセットアップしたときの文字コード,および「付録A 登録する文書(テキストデータ)および文字列データに使用できる文字」に示す文字コードを使用してください。INSERT文の詳細については,マニュアル「HiRDB SQLリファレンス」を参照してください。
INSERT文の指定例を次の図に示します。
また,HiRDBの「pdload(データベース作成ユティリティ)」を使用すると,データの一括登録ができます。
(2) 登録・検索同時実行の設定
登録・検索同時実行を設定すると,データの登録と検索の同時実行ができます。同時実行を使用する利点を次に示します。
-
ほかのユーザが更新中(トランザクションが終了していない状態)の文書を検索できます。
-
IXFREEWORDインデクス情報格納用RDエリアに対してグローバルバッファを割り当てると,登録および検索性能が向上します。
ただし,同時実行できるのは,次の場合です。
-
SQLによる単数の更新系トランザクションと,複数の検索系トランザクションの同時実行
-
インデクス未作成の場合,複数の更新系トランザクションの同時実行
(a) 指定方法
Text Search Plug-inの環境設定項目,およびHiRDBのバックエンドサーバ定義またはシングルサーバ定義に,次の内容を設定します。Text Search Plug-inの環境設定項目については,「2.8 文字列検索プラグインのユーザ環境設定」を参照してください。また,HiRDBのバックエンドサーバ定義またはシングルサーバ定義の詳細については,マニュアル「HiRDB システム定義」を参照してください。
- 文字列検索プラグインの環境設定項目
-
-
FREEWORDプラグインを使用している場合
FREEWORDプラグインの環境設定項目「登録・検索同時実行指定」で次のように指定します。
set phc_search_wait=nowait
-
IXFREEWORDプラグインを使用している場合
IXFREEWORDプラグインの環境設定項目「1RDエリア当たりの排他制御用共用メモリサイズ」で次のように指定します。
set phx_lock_pool_size=共用メモリサイズ
-
- HiRDBのバックエンドサーバ定義またはシングルサーバ定義
-
-
IXFREEWORDプラグインを使用している場合
IXFREEWORDプラグインで使用する共用メモリのサイズを指定します。
HiRDBのバックエンドサーバ定義またはシングルサーバ定義のオペランド「pdplgprm」は,次の形式で指定してください。
- オペランドの指定形式
-
pdplgprm -n プラグイン名 -s 共用メモリサイズ
- 引数
-
-n プラグイン名
共用メモリを使用するプラグインの名称を指定します。ここでは,IXFREEWORDプラグインのプラグイン名「_phxfwrd」を指定してください。
-s 共用メモリサイズ
IXFREEWORDプラグインで使用する共用メモリのサイズ(キロバイト)を指定します。
-
(b) 注意事項
-
HiRDBが提供しているユティリティによる登録と検索系トランザクションは同時に実行できません。
-
インデクス情報の取得ユティリティおよびインデクス作成開始ユティリティ以外のText Search Plug-inのユティリティと,検索系トランザクションは同時に実行できません。インデクス情報の取得ユティリティの詳細については,「3.3.5 phxidxls(インデクス情報の取得ユティリティ)」,インデクス作成開始ユティリティの詳細については,「3.3.9 phxstartidx(インデクス作成開始ユティリティ)」を参照してください。
-
同時実行を設定している場合,Text Search Plug-inのデータの整合性確保のために,一時的に排他制御をします。このため,同時実行を設定していない場合に比べて,排他制御によるオーバヘッドが掛かります。
-
"phc_search_wait=nowait"を設定した場合は,IXFREEWORDインデクスを作成していない場合でも共用メモリの定義をする必要があります。
-
同時実行する場合は,グローバルバッファを指定してください。実行性能が向上します。
-
LOCK文でテーブル全体を排他すると,ほかのトランザクションとの同時実行ができません。このため,分割遅延登録・更新系SQL同時実行を実施する場合は,LOCK文でテーブル全体の排他を実施しないようにしてください。
(3) 分割遅延登録・更新系SQL同時実行の設定
分割遅延登録・更新系SQL同時実行を使用すると,(2)で説明した登録・検索同時実行に加えて,さらに,データ登録とインデクス作成を同時に実行できます。
(a) 指定方法
FREEWORDプラグインの環境設定項目「登録・検索同時実行」に,次のように指定します。
set phc_search_wait=nowait_with_update
(b) 注意事項
-
LOCK文でテーブル全体を排他すると,ほかのトランザクションとの同時実行ができません。このため,分割遅延登録・更新系SQL同時実行を実施する場合は,LOCK文でテーブル全体の排他を実施しないようにしてください。
-
検索トランザクションの排他が更新系SQLまたはインデクス作成開始ユティリティと競合することを避けるため,検索SQL実行時は,SQLの排他オプションにWITHOUT LOCK NOWAITを指定してください。