5.6.4 データ用DBエリアの1セグメントの容量を決める際の考慮点
データ用DBエリアを作成する際に,データ用DBエリアの1セグメントの容量を指定します。ここでは,1セグメントの容量の推奨値,および1セグメントの容量を決める際の考慮点を説明します。
なお,データ用DBエリアの1セグメントの容量は,次の方法で指定します。
-
adbinitコマンドの初期設定オプションadbinitdbareaの-sオプションにメガバイト単位で指定する
-
adbmodareaコマンドのDBエリア追加・変更オプションadbaddareaの-sオプションにメガバイト単位で指定する
(1) 表を格納するデータ用DBエリアの場合
表を格納するデータ用DBエリアの1セグメントの容量の推奨値と考慮点を説明します。
- 重要
-
1つのデータ用DBエリアに1つの表を格納するのが基本ですが,1つのデータ用DBエリアに複数の表を格納する場合は,1セグメントの容量の推奨値が同じ表を格納することを推奨します。
なお,1つのデータ用DBエリアに1セグメントの容量の推奨値が異なる表を格納する場合は,格納する表の中でいちばん大きい推奨値を1セグメントの容量に指定してください。
- ■ローストア表を格納するデータ用DBエリアの場合
-
1セグメントの容量には4メガバイトを指定してください。
■カラムストア表を格納するデータ用DBエリアの場合
-
1セグメントの容量を大きくすると,辞書圧縮方式の圧縮率が向上することがあります。1セグメントの容量の推奨値を求める計算式を次に示します。
計算式
変数の説明
- col_num
-
表の列数(単位:個)
- elm_num(k)
-
表のk番目に定義した列の配列要素数の平均値(単位:個)
配列型以外の列の場合は,1としてください。
- COLDATASIZE(k)
-
表のk番目に定義した列のデータ長の平均値(単位:バイト)
列のデータ長については,「5.8.2 行の種別ごとの格納ページ数の求め方」の「(3) 配列型の列を定義した表の行長(変数ARRAY_ROWSZ)の求め方」の変数COLDATASIZE(k)を参照してください。
1セグメントの容量の推奨値
1セグメントの容量の推奨値は,計算結果によって異なります。
-
計算結果が640を超える場合
16メガバイトを指定することを推奨します。
-
計算結果が1,280を超える場合
32メガバイトを指定することを推奨します。
-
計算結果が上記以外の場合
4メガバイトを指定してください。
-
1セグメントの容量が小さいデータ用DBエリアに配列型の列を定義した表を格納する場合,表の定義時または表への列の追加時にコマンドがエラーになります。このとき,KFAA31737-Eメッセージが出力されます。このメッセージの対処方法に従って1セグメントの容量を大きくしてください。配列型の列を定義した表を格納するデータ用DBエリアの1セグメントの容量の条件については,「5.2.13 配列型の列の定義【カラムストア表】」の「■データ用DBエリアに関する留意事項」を参照してください。
なお,1セグメントの容量が最大値である32メガバイトの場合にKFAA31737-Eメッセージが出力されたときは,次のどれかの対処をしてください。
-
表に定義する列数を減らす
-
表に定義する配列型の最大要素数を減らす
-
列定義の圧縮方式指定に,NONE(データ圧縮なし),RUNLENGTH(ランレングス圧縮方式),DELTA(差分圧縮方式),またはDELTA_RUNLENGTH(差分ランレングス圧縮方式)を指定する
-
-
表に格納するデータ量が少ないときに1セグメントの容量が大きいと,セグメントの格納効率や検索性能に影響を及ぼします。1スレッドの平均格納量,または1スレッドの平均検索量が1セグメントの容量よりも小さいときは,1セグメントの容量を小さくすることを検討してください。1スレッドの平均格納量,および1スレッドの平均検索量の計算式を次に示します。
計算式
変数の説明
- import_csv_size
-
1回のインポートで格納するデータの総量(単位:バイト)
- import_rthd_num
-
adbimportコマンドが使用する処理リアルスレッド数
詳細については,マニュアルHADB コマンドリファレンスのadbimport(データのインポート)を参照してください。
- table_csv_size
-
表に格納するデータの総量(単位:バイト)
- sql_rthd_num
-
サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値
- uthd_num
-
サーバ定義adb_sys_uthd_numオペランドの指定値
-
adbimportコマンドを実行すると,セグメントの格納効率を確認できます。1回のインポートに使用するデータでadbimportコマンドを実行し,KFAA82004-Iメッセージに出力される次の項目を確認してください。
-
データが格納されたセグメント数
-
データが格納されたセグメント中の未使用ページ数
これらの値でセグメントの空比率を計算してください。セグメントの空比率が20%を超える場合は,1セグメントの容量を小さくすることを検討してください。
セグメントの空比率の計算式を次に示します。
計算式(単位:%)
変数の説明
- page_size
-
表を格納するデータ用DBエリアのページサイズ(単位:バイト)
-
- メモ
-
1セグメントの大きさを表す用語には,次の2つがあります。
-
1セグメントの容量
1セグメントの大きさをメガバイト単位で表すときの用語です。
-
セグメントサイズ
1セグメントの大きさをページ数単位で表すときの用語です。
セグメントサイズは,「1セグメントの容量÷ページサイズ」で求められます。
-
(2) インデクスを格納するデータ用DBエリアの場合
1セグメントの容量には,4メガバイトを指定してください。