はじめに
Dr.Sumではインポートコマンド・バッチ(dwtab_import)を使って
外部データを取り込むことができます。
インポートやテーブルデータの更新方法によっては繰り返し処理することでテーブルが断片化するため、
断片化した場合にテーブルの再構築・リビルドで解消する方法について紹介します。
補足
本記事の内容・キャプチャ等はDr.Sum Datalizer Ver.5.6のものです。
設定方法など詳細は公式Dr.Sum Datalizer Ver.5.6 マニュアルを参照してください。
インポート方法の種類
Dr.Sumでは外部データを取り込む方法がいくつかあります。
- Dr.Sum Enterprise Managerを使う
- インポートウィザード・仮想テーブル(vtb/vtfファイル)を使って外部データベースやCSV/Excelファイルを取込
- インポートタスクからタスクを作成してCSV/Excelファイルを取込 - インポートコマンド(dwtab_import)を使う
- コマンドをバッチ化して外部データベースやCSV/Excelファイルを取込
また、インポートコマンド(dwtab_import)とデリートコマンド(dwtab_delete)を組み合わせて、必要な年月分のデータを選択的に入れ替えることもできます。
補足
詳細は公式マニュアルを参照してください。
・Dr.Sum Enterprise Managerのインポートタブ
・デリートコマンド(dwtab_delete)
・インポートコマンド(dwtab_import)
・コマンドのバッチ化
インポートモードの種類
いずれの方法でインポートする場合でも、インポートモードを選択できます。
既存テーブルにデータをインポートする場合に主に使用するのは下記の2つです。
- テーブル内の行を削除してインポート
既存データをすべて削除してからインポートするモード - テーブルに行を追加
既存データは消さずに追加でインポートするモード
補足
「テーブルを新規に作成してインポート」するモードもありますが、バッチなどで定期的にインポートする場合は上記のいずれかのモードで既存テーブルを更新することがほとんどだと思います。
また、「キーが重複したらアップデート」のモードもありますが、DataLoaderのセットアップなどが必要となります。
詳しくは公式マニュアルを参照してください。
テーブルの断片化とリビルド
デリートコマンド(dwtab_delete)とインポートコマンド(dwtab_import)を使ってインポートモード「テーブルに行を追加」でバッチなどを使い部分的なデータの入れ替えを繰り返し実行するとテーブルの断片化が発生します。
断片化が進むとパフォーマンス劣化や容量の肥大化などの影響が出るため、定期的にテーブルのリビルド・再構築を行って断片化を解消することをお勧めします。
(なお、インポートモード「テーブル内の行を削除してインポート」でインポートした場合やtruncateコマンドを使ってデータを全件削除してインポートした場合は断片化は起きないはずです。)
リビルドの種類
Dr.Sumのリビルドには「完全リビルド」と「簡易リビルド」の2つがあります。
完全リビルドは後述の通り実行時の影響が大きいため注意が必要です。
- 完全リビルド
テーブルを構成する物理ファイル(CRXファイル・DATファイル)をすべて再構築します。 - 簡易リビルド
テーブルを構成する物理ファイルのうちDATファイルのみ再構築します。
完全リビルドの実行時の影響
再構築中は対象テーブルをロックするため、当該テーブルを参照することができない時間が発生します。また、件数が多い場合は相応の時間がかかることが見込まれます。
※リビルドの実行時間は行数、項目数やユニーク制約のある項目の数などにも影響されますが、具体的な実行時間を事前に算出するのは難しいです。
補足
・CRXファイル:カーディナリ分のデータを格納しているファイル。テーブルからレコードが削除されてデータ上ではカーディナリが低くなっても再構築しないとカーディナリは変わらない。
・DATファイル:カラム毎に各レコードとCRXファイルで管理しているIDを紐づけるデータを格納しているファイル。テーブルからレコードが削除されても再構築しないとファイル上は物理削除されない。
詳しくは公式マニュアルを参照してください。
テーブルの物理構造
テーブルを再構築(リビルド)する
テーブルの再構築のタイミングを判断するには
リビルド方法
テーブルの再構築・リビルドはEnterpriseManagerから実施する方法とコマンド(dwtab_rebuild)で実施する方法があります。
具体的な操作手順は公式マニュアルを参照してください。