Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


5.2.4 マルチチャンク表を定義する場合の考慮点

ここでは,実表をマルチチャンク表として定義する場合の考慮点について説明します。

ここをお読みいただいたあとに,「5.6.2 データ用DBエリアにマルチチャンク表を格納する場合の考慮点」の説明もお読みください。

また,実表をアーカイブマルチチャンク表として定義する場合は,ここをお読みいただいたあとに,「5.2.5 アーカイブマルチチャンク表を定義する場合の考慮点【ローストア表】」の説明もお読みください。

〈この項の構成〉

(1) 実表をマルチチャンク表として定義する場合のメリット

実表をマルチチャンク表として定義した場合,次に示す運用ができます。

メモ

4メガバイト以下の少量のデータだけを頻繁に格納する場合は,バックグラウンドインポート機能ではなく,操作系SQLのINSERT文を使用することを検討してください。バックグラウンドインポートで少量のデータを頻繁に格納すると,むだな領域が発生してしまい,データの格納効率が悪くなります。バックグラウンドインポートを実行すると,すでに割り当てられているセグメントに空きがあっても,新規にセグメントが確保されて割り当てられるためです。

実表をカラムストア表として定義し,そのカラムストア表に対してINSERT文,UPDATE文,およびDELETE文を実行する可能性が高い場合は,カラムストア表かつマルチチャンク表として実表を定義してください。カラムストア表に対してINSERT文,UPDATE文,およびDELETE文を繰り返し実行すると,表の再編成が必要になることがあります。その際,マルチチャンク表であれば,チャンク単位で再編成が実行できるため,次のメリットがあります。

また,実表をアーカイブマルチチャンク表として定義すると,チャンクアーカイブ機能も使用することができます。実表をアーカイブマルチチャンク表として定義する場合は,「5.2.5 アーカイブマルチチャンク表を定義する場合の考慮点【ローストア表】」の説明もお読みください。

(2) 実表をマルチチャンク表として定義する場合のデメリット

(3) CREATE TABLE文で必要な指定(チャンク数の最大値)

実表をマルチチャンク表として定義する場合は,CREATE TABLE文のチャンク指定でチャンク数の最大値を指定してください。

(4) チャンク数の最大値の求め方

adbimportコマンドでバックグラウンドインポートを実行するたびに,チャンクが作成されます。また,adbmergechunkコマンドで,作成された複数のチャンクをマージできます。ただし,CREATE TABLE文のチャンク指定で指定したチャンク数の最大値以上のチャンクは作成できません。

そのため,次の3点を踏まえて,チャンク数の最大値を見積もってください。

なお,作成したチャンクはPURGE CHUNK文で削除できます。削除したチャンクの数だけ,チャンクを作成できます。また,CREATE TABLE文で指定したチャンク数の最大値は,ALTER TABLE文で変更できます。

変数CHUNK_NUMの値を,次の計算式で求めてください。計算式で求めた値以上の値を,CREATE TABLE文のチャンク数の最大値に指定します。

計算式(単位:個数)
CHUNK_NUM =
    ↑years×↑(import_num÷merge_source_chunk_num)↑×safe_rate↑
    +(↑merge_source_chunk_num×safe_rate↑)

注※:adbmergechunkコマンド実行時にマージ元チャンクが削除仕掛中のチャンクとして残るおそれがあるため,それを考慮して多めに見積もります。

重要

adbmergechunkコマンドの実行時に,マージ元チャンクが削除されなかった場合,マージ元チャンクは削除仕掛中のチャンクとして残ります。その結果,削除仕掛中のチャンクの数だけ,使用できるチャンク数が減ります。そのため,変数CHUNK_NUMの値を求める際は,削除仕掛中のチャンクの数も考慮する必要があります。削除仕掛中のチャンクについては,「11.4.9 チャンクをマージする方法(チャンク数を減らす方法)」の「(3) adbmergechunkコマンドによるチャンクのマージ」を参照してください。

変数の説明

years

チャンク(実表に格納したデータ)を保持する年数です。

adbimportコマンドでバックグラウンドインポートを実行して作成されたチャンクを,PURGE CHUNK文で削除するまでの年数を代入してください。

import_num

1年間にadbimportコマンドでバックグラウンドインポートを実行する回数を代入してください。

merge_source_chunk_num

adbmergechunkコマンドを実行するときに存在するマージ元チャンクの数です。

例えば,1日1回adbimportコマンドでバックグラウンドインポートを実行して,5日に1回adbmergechunkコマンドでチャンクをマージする場合は,5を代入してください。

safe_rate

安全率です。1.2を代入してください。

変数CHUNK_NUMの求め方の例を次に示します。

■変数CHUNK_NUMの求め方の例

次の条件で,変数CHUNK_NUMを計算します。

  • チャンク(実表に格納したデータ)を2年間保持する

  • 週に1回,adbimportコマンドでバックグラウンドインポートを実行する

  • 月に1回,adbmergechunkコマンドで4つのチャンクをマージする

  • 安全率を1.2とする

計算式(単位:個数)

[図データ]

この例の場合,変数CHUNK_NUMの値は39となります。そのため,チャンク数の最大値には39以上の値を指定してください。