Hitachi

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


5.8.2 行の種別ごとの格納ページ数の求め方

ここでは,各表を格納するために必要な基本行用ページ数(変数BP(i)),および各表を格納するために必要な分岐行用ページ数(変数VP(i))の求め方について説明します。

〈この項の構成〉

(1) 基本行用ページ数(変数BP(i))の求め方

基本行用ページ数(変数BP(i))は,次に示す計算式から求めてください。変数BP(i)の分母の括弧部は1ページに格納される行数であり,最小1,最大255となります。

計算式

[図データ]

変数の説明
  • row_num

    表に格納する行数(単位:個)

  • page_size

    データ用DBエリアのページサイズ(単位:バイト)

  • pctfree

    CREATE TABLE文のPCTFREEで指定する未使用領域の比率(単位:%)

    未使用領域の比率を指定しない場合は,30%と仮定して計算してください。

    カラムストア表にINSERT文またはUPDATE文で追加するデータの基本行用ページ数を求める場合は,0%と仮定して計算してください。

    なお,pctfreeの値は,次に示す計算式を満たすように値を決めてください。

    計算式(pctfreeの値)

    [図データ]

  • CTRLSIZE

    ローストア表の場合は56を指定してください。

    カラムストア表にINSERT文またはUPDATE文で追加するデータの基本行用ページ数を求める場合は80を指定してください。

また,行長ROWSZは次に示す計算式から求めてください。非FIX表(表オプションBRANCH ALLの指定なし),非FIX表(表オプションBRANCH ALLの指定あり)およびFIX表で計算式が異なります。

カラムストア表にINSERT文またはUPDATE文で追加するデータの基本行用ページ数を求める場合には,「計算式(非FIX表で表オプションBRANCH ALLの指定なしの場合)」に従って求めてください。

計算式(非FIX表で表オプションBRANCH ALLの指定なしの場合)

[図データ]

計算式(非FIX表で表オプションBRANCH ALLの指定ありの場合)

[図データ]

計算式(FIX表の場合)

[図データ]

変数の説明
  • col_num

    表の列の総数(単位:個)

  • col_size(i)

    各列のデータ長(単位:バイト)

    次に示す表を基に,各列のデータ長を求めてください。そのあとに,すべての列の合計を求めてください。

    表5‒15 各データ型のデータ長の一覧

    項番

    分類

    データ型

    データ長(単位:バイト)

    1

    数データ

    INTEGER

    8

    2

    BIGINT

    3

    SMALLINT

    4

    4

    DECIMAL(m,n)

    NUMERIC(m,n)

    1≦m≦4

    2

    5

    5≦m≦8

    4

    6

    9≦m≦16

    8

    7

    17≦m≦38

    16

    8

    DOUBLE PRECISION

    8

    9

    FLOAT

    10

    文字データ

    CHARACTER(n)

    n

    11

    VARCHAR(n)

    var_col_size

    12

    日時データ

    DATE

    4

    13

    TIME(p)

    3+↑p÷2↑

    14

    TIMESTAMP(p)

    7+↑p÷2↑

    15

    バイナリデータ

    BINARY(n)

    n

    16

    VARBINARY(n)

    var_col_size

    17

    配列データ

    ARRAY

    11

    (凡例)

    mn:正の整数

    p:0,3,6,9または12

    注※

    全体の桁数がm桁で,小数点以下の桁数がn桁の固定小数点数を示します。mを省略した場合は38が仮定されます。

var_col_sizeVARCHAR型およびVARBINARY型の列のデータ長

次に示す表を基にデータ長を求めてください。

表5‒16 VARCHAR型およびVARBINARY型の列のデータ長の一覧

項番

表オプション

BRANCH ALLの指定有無

列定義

BRANCHの指定

定義長n

(単位:バイト)

データ長

(単位:バイト)

1

指定あり

9

2

指定なし

YES

11

3

NO

1≦n≦255

d+2

4

256≦n≦32,000

d+3

5

AUTOまたは指定なし

1≦n≦255

d+2

6

256≦n≦32,000

11

(凡例)

n:正の整数

d:実際のデータ長

−:該当しません。

(2) 分岐行用ページ数(変数VP(i))の求め方

分岐行用ページ数(変数VP(i))は,次に示す計算式から求めてください。

計算式

[図データ]

変数の説明
  • row_num

    表に格納する行数(単位:個)

  • var_num

    分岐行として管理される列の列数(単位:個)

    次に示す列の数を求めてください。

    表オプションBRANCH ALLの指定ありの場合

    VARCHAR型,およびVARBINARY型の列の数

    表オプションBRANCH ALLの指定なしの場合

    次のどれかに該当するVARCHAR型,およびVARBINARY型の列の数の合計

    ・列定義BRANCHYESを指定した列

    ・定義長256バイト以上で列定義BRANCHAUTOを指定した列

    ・定義長256バイト以上で列定義BRANCHを省略した列

  • page_size

    データ用DBエリアのページサイズ(単位:バイト)

  • pctfree

    CREATE TABLE文のPCTFREEで指定する未使用領域の比率(単位:%)

    未使用領域の比率を指定しない場合は,30%と仮定して計算してください。

    カラムストア表にINSERT文またはUPDATE文で追加するデータの分岐行用ページ数を求める場合は,0%と仮定して計算してください。

    なお,pctfreeの値は,「(1) 基本行用ページ数(変数BP(i))の求め方」の変数「pctfree」を参照して,計算式を満たすように値を決定してください。

  • var_size

    分岐行の列の平均データ長(単位:バイト)

    次に示す表を基に求めてください。

    表5‒17 分岐行となる列のデータ長の一覧

    分類

    データ型

    データ長(単位:バイト)

    文字データ

    VARCHAR

    d

    バイナリデータ

    VARBINARY

    d

    (凡例)

    d:実際のデータ長

  • CTRLSIZE

    ローストア表の場合は56を指定してください。

    カラムストア表にINSERT文またはUPDATE文で追加するデータの分岐行用ページ数を求める場合は80を指定してください。

(3) 配列型の列を定義した表の行長(変数ARRAY_ROWSZ)の求め方

配列型の列を定義した表の行長(変数ARRAY_ROWSZ)は,次に示す計算式から求めてください。

計算式

[図データ]

変数の説明
  • col_num

    表の列の総数

  • page_size

    データ用DBエリアのページサイズ(単位:バイト)

  • ARRAY_DICSIZE(k)

    表のk番目に定義された列の圧縮用辞書のサイズ

    次に示す計算式から求めてください。なお,列定義の圧縮方式指定に,NONE(データ圧縮なし),RUNLENGTH(ランレングス圧縮方式),DELTA(差分圧縮方式),またはDELTA_RUNLENGTH(差分ランレングス圧縮方式)を指定する列については,ARRAY_DICSIZE(k)は0になります

    計算式

    [図データ]

  • elm_num(k)

    表のk番目に定義した列の最大要素数(単位:個)

    配列型以外の列の場合は,1としてください。

  • COLDATASIZE(k)

    表のk番目に定義した列のデータ長(単位:バイト)

    次に示す計算式で求めてください。

    計算式

    [図データ]

  • COLDATASIZE_NOBOUND(k)

    配列型の列の要素データ型および定義長を基に,次に示す表から求めてください。

    表5‒18 変数COLDATASIZE_NOBOUNDの値

    項番

    分類

    要素データ型

    COLDATASIZE_NOBOUNDの値(単位:バイト)

    1

    数データ

    INTEGER

    9

    2

    BIGINT

    3

    SMALLINT

    5

    4

    DECIMAL(m,n)

    NUMERIC(m,n)

    m≦4

    3

    5

    5≦m≦8

    5

    6

    9≦m≦16

    9

    7

    17≦m

    17

    8

    DOUBLE PRECISION

    9

    9

    FLOAT

    10

    文字データ

    CHARACTER(n)

    n≦127

    n+1

    11

    128≦n

    9

    12

    VARCHAR(n)

    n≦127

    n+2

    13

    128≦n≦255

    129

    14

    256≦n

    130

    15

    日時データ

    DATE

    5

    16

    TIME(p)

    4+↑p÷2↑

    17

    TIMESTAMP(p)

    8+↑p÷2↑

    18

    バイナリデータ

    BINARY(n)

    n≦127

    n+1

    19

    128≦n

    9

    20

    VARBINARY(n)

    n≦127

    n+2

    21

    128≦n≦255

    129

    22

    256≦n

    130

    (凡例)

    mn:正の整数

    p:0,3,6,9または12

    注※

    全体の桁数がm桁で,小数点以下の桁数がn桁の固定小数点数を示します。mを省略した場合は38が仮定されます。

  • ARRAY_DATAPAGENUM

    次の手順で求めてください。

    前提条件

    • ARRAY_DATAPAGENUMの初期値は1です。

    • 列の定義順を示すkの初期値は1です。

    • 変数については,変数ARRAY_DICSIZE(k)を参照してください。

    手順

    1. free_sizeを求める

      次の計算式で求めてください。

      free_sizepage_size - 56
    2. k番目の列の次の値を求める

      COLDATASIZE(k)8)×elm_num(k)

      手順2.の値が「page_size - 56」(手順1.の値)を超える場合は,「page_size - 56」(手順1.の値)を手順2.の値としてください。

    3. k番目の列の次の値を求める

      手順1.の値手順2.の値
    4. 手順3.の値を確認する

      手順3.の値<0の場合

      ARRAY_DATAPAGENUMに1を加算して,手順1.に戻って手順を繰り返してください。

      0≦手順3.の値の場合

      kに1を加算してください。

      kが表に定義した列数を超えたら計算は完了です。超えていない場合は手順2.に戻って手順を繰り返してください。