17.1.2 adbimportコマンドのオプション機能
adbimportコマンドには,次に示すオプション機能があります。
-
論理エラーデータの出力機能
-
B-treeインデクスとテキストインデクス作成処理からの再実行機能
-
バックグラウンドインポート機能
-
B-treeインデクス作成用スレッド数の調整機能
- 〈この項の構成〉
(1) 論理エラーデータの出力機能
データをインポートする際,正常なデータだけがインポートされ,不正なデータ(論理エラーデータ)はインポートされません。論理エラーデータを含む行のデータは,論理エラーデータファイルに出力されます。ファイルに出力された論理エラーデータを修正したあとに,adbimportコマンドを再実行して,修正したデータをインポートできます。
論理エラーデータの出力機能の概要を次の図に示します。
- ■論理エラーデータとは
-
論理エラーデータとは,次に示すデータのことです。
-
データ長が不正なデータ
-
不正な囲み文字が指定されているデータ
-
入力データの変換処理中にエラーが発生したデータ
-
インポート対象の入力データが存在しない場合
-
入力データの列数が,表の列数より多いまたは少ない場合
-
非ナル値制約の列のデータに空文字列※がある場合
-
入力データファイルの書式が不正の場合
- 注※
-
空文字列とは,入力データ中でフィールドデータの値が存在しない空の文字列のことです。
-
(2) B-treeインデクスとテキストインデクス作成処理からの再実行機能
データインポート処理では,表データのインポートが完了したあとにB-treeインデクスおよびテキストインデクスを作成します。B-treeインデクスおよびテキストインデクスの作成処理中にadbimportコマンドが異常終了するなどした場合,adbimportコマンドの再実行時にB-treeインデクスおよびテキストインデクスの作成処理からデータインポート処理を再開します。そのため,データインポート処理の再実行に掛かる時間を短縮できます。
B-treeインデクスとテキストインデクス作成処理からの再実行機能の概要を次の図に示します。
- 注※
-
次の順序でインデクスの作成処理が実行されます。
-
インデクスレコードのソート処理
-
1.のソート処理結果を入力情報にしてインデクスを作成
2.の処理中にadbimportコマンドが中断した場合,再実行機能が適用されます。adbimportコマンドを再実行すると,2.の処理から再開されます。
なお,サーバ定義のadb_cmd_ixrec_file_useオペランドにREUSABLEを指定した場合は,1.の処理中にadbimportコマンドが中断したときも,再実行機能が適用されます。adbimportコマンドを再実行すると,1.の処理から再開されます。
-
B-treeインデクスとテキストインデクス作成処理からの再実行機能は,次に示すすべての条件を満たす場合に適用されます。
-
次に示すインデクスのどちらか,または両方がインポート対象表に定義されている※
-
B-treeインデクス(インポート対象表に主キーが定義されている場合も含む)
-
テキストインデクス
- 注※
-
adbimportコマンドの再実行前に,処理対象表のB-treeインデクスおよびテキストインデクスをすべて削除した場合は,コマンドの終了処理だけが実行されます。
-
-
インデクスレコードのソート処理が完了している(ソート処理が完了するとKFAA80220-Iメッセージが出力されます)
ただし,サーバ定義のadb_cmd_ixrec_file_useオペランドにREUSABLEを指定した場合は,表データのインポートが完了している(表データのインポートが完了するとKFAA80203-Iメッセージが出力されます)
-
次に示すどれかの理由で処理が中断している
-
adbimportコマンドが異常終了した
-
adbcancelコマンドでadbimportコマンドを強制終了した
-
adbstop --forceコマンドでHADBサーバを強制終了した
-
OSのkillコマンド,電源断などでサーバプロセスを強制終了した
-
なお,--forceオプションを指定してadbimportコマンドを再実行したときは,データインポート処理の初めから強制実行されるため,B-treeインデクスとテキストインデクス作成処理からの再実行機能は適用されません。
(3) バックグラウンドインポート機能
バックグラウンドインポート機能を適用すると,同一の表に対してデータ検索とインポートが同時に実行できます(バックグラウンドインポート中のデータは検索の対象外となります)。
バックグラウンドインポート機能の概要を次の図に示します。
バックグラウンドインポート機能は,次のすべての条件を満たす場合に適用されます。
-
インポート対象表の定義時にCHUNKを指定している(インポート対象表はマルチチャンク表である)
-
データインポートを追加モードで実行している(adbimportコマンドの-dオプションを省略している)
-
adbimportコマンドの-bオプションを指定している
-
これまでに表に作成されたチャンク数,およびバックグラウンドインポートで作成されるチャンク数の合計が,表定義時のCHUNKの指定値を超えていない
- 注
-
バックグラウンドインポート実行中に,次の情報がメッセージログファイルに出力されます。
-
表に作成できる残りのチャンク数
-
バックグラウンドインポート実行中に作成されたチャンクのチャンクID
-
- メモ
-
- ■待機状態のチャンクを作成するバックグラウンドインポート
-
バックグラウンドインポートで,インポートしたデータを操作系SQLの対象外としたい場合は,-bオプションだけでなく,--status waitオプションも指定してください。バックグラウンドインポートで,待機状態のチャンクに対してデータがインポートされます。
なお,待機状態のチャンクに対して,操作系SQLのPURGE CHUNK文とTRUNCATE TABLE文は実行できます。
(4) B-treeインデクス作成用スレッド数の調整機能
B-treeインデクス作成用スレッド数の調整機能とは,B-treeインデクスの作成処理時間の短縮よりもB-treeインデクスのデータの格納効率を優先して,B-treeインデクスの作成処理を実行する機能です。
この機能を有効にすると,データのサイズや件数などに応じて,B-treeインデクスの作成処理で使用される処理リアルスレッド数がHADBサーバによって自動的に変更されます。B-treeインデクスの作成処理で使用される処理リアルスレッド数は,「使用可能な最大数」と「1」のどちらかとなります。データのサイズが小さい場合や件数が少ない場合,使用される処理リアルスレッド数は,1に調整されます。
なお,複数のB-treeインデクスの作成処理が実行される場合,インデクスごとに使用される処理リアルスレッド数をHADBサーバが決定します。
B-tree インデクス作成用スレッド数の調整機能を有効にする場合,次のコマンドオプションを指定します。
-
adbimportコマンドのadb_import_dvbix_rthd_useオプション
-
adbidxrebuildコマンドのadb_idxrebuild_dvbix_rthd_useオプション
-
adbmergechunkコマンドのadb_mergechunk_dvbix_rthd_useオプション
コマンドオプションの詳細については,各コマンドのオプションの説明を参照してください。
- メモ
-
-
B-treeインデクスの作成処理で,B-treeインデクスごとに使用される処理リアルスレッド数は,KFAA52002-Iメッセージに出力されます(作成されるB-treeインデクスごとにメッセージが出力されます)。
-
この機能は,B-treeインデクスに対してだけ有効です。レンジインデクスおよびテキストインデクスの作成処理には影響しません。コマンドの動作は,この機能を有効にしなかった場合と同じです。
-
この機能を有効にしなかった場合,B-treeインデクスの作成処理時間の短縮を優先してB-treeインデクスを作成します。そのため,B-treeインデクスの作成処理は,データのサイズや件数に関係なく,使用可能な処理リアルスレッドを最大限に使用して並列に処理されます。この場合,データのサイズが小さかったり件数が少なかったりすると,この機能を有効にしたときと比べてB-treeインデクスの格納効率が悪くなることがあります。
-
- ■機能を有効にしたときのメリット
-
この機能を有効にすると,データのサイズが小さい場合や件数が少ない場合に,B-treeインデクス作成処理で使用する処理リアルスレッド数が1に調整されます。使用する処理リアルスレッド数が減ることによって,B-treeインデクスのデータを格納するセグメント数が減るため,B-treeインデクスのデータの格納効率が向上します。
- メモ
-
この機能を有効にした場合,B-treeインデクスの作成処理の初期処理でB-treeインデクスごとに数MB程度のメモリを使用して,B-treeインデクスの容量の見積もり処理を行います。そのため,次のようにコマンドの実行時間が長くなることがあります。
-
adbimportコマンドまたはadbmergechunkコマンドの場合
コマンドの実行時間が,処理対象表に定義されているB-treeインデクスごとに1秒程度長くなることがあります。
-
adbidxrebuildコマンドの場合
コマンドの実行時間が,処理対象のチャンクそれぞれについて再作成対象であるB-treeインデクスごとに1秒程度長くなることがあります。
なお,B-treeインデクスのインデクス構成列の長さ(複数列インデクスの場合はインデクス構成列の合計長)が短い場合は,コマンドの実行時間が上記より長くなることがあります。
-
- ■機能を有効にする際の目安
-
データのサイズや件数などによってはB-treeインデクスのデータの格納効率が向上することがあるため,この機能を有効にすることを推奨します。
定義予定のB-treeインデクス,または既存のB-treeインデクスに効果があるかどうか詳細な目安を次に示します。
-
この機能は,コマンド実行時に追加するデータに対して作成されるB-treeインデクスの下位ページ用のセグメント容量が64MB以下のときに,より効果が見込めます。したがって,処理対象表に定義されているB-treeインデクスのうち,コマンドによって作成されるB-treeインデクスの下位ページ用のセグメント容量が64MBを超えないものが1つ以上ある場合が,この機能を有効にする目安となります。例えば,1日に何度もインポート処理を実行し,そのうちの何回かは,作成されるB-treeインデクスの下位ページ用のセグメントの容量が64MB以下になる場合,この機能を有効にすることでB-treeインデクスのデータの格納効率の向上が期待できます。一方で,コマンド実行時に作成される各B-treeインデクスの下位ページ用のセグメント容量が常に64MBを超える運用の場合,この機能を有効にしてもB-treeインデクスのデータの格納効率の向上はあまり期待できません。
- メモ
-
B-treeインデクスの下位ページ用のセグメント容量については,マニュアルHADB システム構築・運用ガイドのデータ用DBエリアの総ページ数の求め方の変数SGIDXおよびPGIDXの求め方(シングルチャンク表の場合)および変数SGIDXおよびPGIDXの求め方(マルチチャンク表の場合)の変数SGIDXの計算式を参考にして,下位ページ用セグメントで使用するページ数およびセグメント数を求めてください。その値を基にB-treeインデクスの下位ページ用のセグメント容量を算出してください。
-
すでに作成されたB-treeインデクスを基に判断する場合,adbdbstatusコマンドで出力される情報から,B-treeインデクスごとの下位ページ用セグメントの使用中ページの容量を求めてください。求めた容量のうち64MB以下のものが1つ以上ある場合を,この機能を有効にする目安としてください。
adbdbstatusコマンドで出力される情報については,「13.7 DBエリア,表とインデクスの使用量情報で出力される項目」を参照してください。
-
- ■制限事項
-
-
処理対象表がアーカイブマルチチャンク表の場合,この機能は有効になりません。
-
adbimportコマンドのB-treeインデクス作成処理からの再実行機能によって,B-treeインデクスの作成処理からデータインポート処理が再開した場合,この機能は有効になりません。前回のadbimportコマンド実行時に,この機能を有効にする指定をしていても有効になりません。
adbimportコマンドのB-treeインデクス作成処理からの再実行機能については,「17.1.2 adbimportコマンドのオプション機能」の「(2) B-treeインデクスとテキストインデクス作成処理からの再実行機能」を参照してください。
-
adbidxrebuildコマンドの再実行機能によって,B-treeインデクスの再作成処理を再開した場合,この機能は有効になりません。前回のadbidxrebuildコマンド実行時に,この機能を有効にする指定をしていても有効になりません。
adbidxrebuildコマンドの再実行機能については,「16.1.3 adbidxrebuildコマンドのオプション機能」の「(1) 再実行機能」を参照してください。
-
- ■サーバ定義との関係
-
-
サーバ定義adb_cmd_dvbix_rthd_useオペランドの値は,この機能の対象となるコマンドオプションを省略した場合のデフォルト値となります。そのため,サーバ定義adb_cmd_dvbix_rthd_useオペランドにこの機能を有効にする指定をした場合,この機能の対象となるコマンドオプションを省略してコマンドを実行しても,この機能が有効になります。
サーバ定義adb_cmd_dvbix_rthd_useオペランドについては,マニュアルHADB システム構築・運用ガイドのコマンドに関するオペランド(set形式)を参照してください。
-
この機能の対象となるコマンドオプションを指定した場合は,コマンドオプションの指定値の方が,サーバ定義adb_cmd_dvbix_rthd_useオペランドの値よりも優先されます。
-
- ■留意事項
-
-
この機能を有効にした場合,ごくまれに検索性能に軽微な影響が出ることがあります。その場合は,この機能を有効にしないで(FIXEDを指定して)B-treeインデクスを再作成してください。
-
B-treeインデクスの作成処理で使用される処理リアルスレッド数が1に調整されるかどうかは,データのサイズや件数によって決まります。そのため,この機能を有効にしても,すべてのB-treeインデクスの作成処理で,使用される処理リアルスレッド数に使用可能な最大数が適用されて実行されることもあります。
-