Hitachi

ノンストップデータベース HiRDB Version 9 システム定義(Windows(R)用)


付録C.4 表定義情報用バッファ長(pd_table_def_cache_size)の見積もり式

〈この項の構成〉

(1) 計算式で使用する変数

a:ディクショナリ表(SQL_TABLES表)のDEFINITION_CACHE_SIZEの値(単位:バイト)

DEFINITION_CACHE_SIZEの値が分からない場合は,「表定義キャッシュサイズの求め方」を参照してください。

b:表の列数

c:表のインデクス数

d:表分割条件数

e:表格納RDエリア数

f:インデクス格納RDエリア数

g:BLOB列数

h:BLOB属性を含む抽象データ型数

i:抽象データ型中のBLOB属性の総数

j:抽象データ型数

k:プラグインオプション数

n:インデクス除外キー値数

p:ディクショナリ表(SQL_TABLES表)のSTATISTICS_CACHE_SIZEの値(単位:バイト)

pdgetcstコマンドで表の最適化情報を取得した場合に加算します。単位がバイトなのでキロバイトに変換して代入してください。STATISTICS_CACHE_SIZEの値が分からない場合は次に示す計算式で求めます。

(2.6×q1+3.0×q2+0.04×c+0.02)×1024(単位:バイト)

1:列のデータ型がDECIMAL型以外の列最適化情報数,及び精度31けたまでのDECIMAL型の列最適化情報数の合計

2:列のデータが精度32けた以上のDECIMAL型の列最適化情報数

r:CREATE TABLEのDEFAULTオペランドの指定列数

s:CREATE TABLEのDEFAULTオペランドに指定する既定値長の合計値(単位:バイト)

既定値を指定するすべての列数分加算します。既定値長を長く変更することがある場合は,変更後の長さを加算してください。

t:パブリックビュー表の表名と同じ表識別子を所有する認可識別子数

u:表に定義しているトリガ数

v:新旧値相関名で修飾して使用している列数

w:トリガ動作条件数

x:トリガ動作条件の総解析ツリー長(単位:バイト)

トリガ動作条件の解析ツリー長の見積もり式については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「通常のデータディクショナリ用RDエリアの容量の見積もり」を参照してください。

y:UPDATEトリガのトリガ契機列数

z:表に定義している外部キー数

aa:表の主キーを参照している外部キー数

ab:表に定義している検査制約数

ac:検査制約用解析ツリーの合計長(単位:バイト)

検査制約用解析ツリー長の見積もり式については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「通常のデータディクショナリ用RDエリアの容量の見積もり」を参照してください。

ad:インデクス構成部分構造パス数

ae:該当するインデクスの部分構造パスの合計長

af:該当するインデクスの部分構造パス用解析ツリーの合計長(単位:バイト)

部分構造パス用解析ツリー長の見積もり式については,マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「通常のデータディクショナリ用RDエリアの容量の見積もり」を参照してください。

ag:表に定義している圧縮列の数

(2) 1表当たりの表定義情報バッファサイズ(単位:キロバイト)

1表当たりの表定義情報バッファサイズは,次に示す概算式で求めてください。なお,ビュー表の場合は,ビュー表の基となる実表についても計算してください。

表の種類

1表当たりの表定義情報バッファサイズ

の計算式(単位:キロバイト)

1実表の表定義情報バッファサイズ

↓(4+↑a÷1024↑+0.01×b+↑p÷1024↑+7)÷8↓×8

1ビュー表の表定義情報バッファサイズ

↓(4+↑a÷1024↑+0.01×b+7)÷8↓×8

(3) 表定義キャッシュサイズの求め方

(a) DEFINITION_CACHE_SIZEの値が分からない場合

次のどれかに該当する場合は,ディクショナリ表を検索してもDEFINITION_CACHE_SIZEの値が分かりません。

  • まだ表を定義していない場合

  • HiRDB Version 4.0からバージョンアップした場合※1

  • 32ビットモードのHiRDBから64ビットモードのHiRDBに移行した場合※1,※2

注※1

この場合,DEFINITION_CACHE_SIZEに正しい値が入っていません。

注※2

32ビットモードから64ビットモードに移行した表であるかどうかは,pdvrupコマンドの実行時間と表の作成時間を比較してください。表の作成時間の方が古い表が,32ビットモードから64ビットモードに移行した表です。pdvrupコマンドの実行時間は,ディクショナリ表(SQL_TABLES表)のMASTER.SQL_TABLESのCHANGE_TIMEで分かります。表の作成時間は,ディクショナリ表(SQL_TABLES表)の作成した表のCREATE_TIMEで分かります。これらの列は,次に示すSQLで検索できます。

  • pdvrupコマンド実行時間

    select CHANGE_TIME from MASTER.SQL_TABLES where
        TABLE_SCHEMA='MASTER' and TABLE_NAME='SQL_TABLES'
  • 表の作成時間

    select CREATE_TIME from MASTER.SQL_TABLES where
        TABLE_SCHEMA='認可識別子' and TABLE_NAME='表名'

(b) 表定義キャッシュサイズの計算式

表定義キャッシュサイズは次に示す計算式で求めてください。

  • 実表の場合:(計算式1+計算式2)×1024(単位:バイト)

  • ビュー表の場合:(計算式1+計算式3)×1024(単位:バイト)

    計算式

    の種類

    計算式

    計算式1

    HiRDBが32ビットモードの場合

    0.6+0.13×b+0.25×c+0.18×(d+1)+0.01×(e+f)

    HiRDBが64ビットモードの場合

    0.9+0.19×b+0.28×c+0.18×(d+1)+0.01×(e+f)

    計算式2

    ●LOB列を定義した表の場合に加算します。

    (0.02+0.01×e)×g

    ●BLOB属性を含む抽象データ型の列を定義した表の場合に加算します。

    0.02×h+(0.02+0.01×e)×i

    ●抽象データ型の列を定義した表の場合に加算します。

    0.3×j+0.3×k

    ●インデクス除外キー値を定義した表の場合に加算します。

    0.3×n

    ●SEGMENT REUSEを指定(SEGMENT REUSE NOを除く)した表の場合に加算します。

    0.01×e

    ●DEFAULTオペランドに既定値を指定した表の場合に加算します。

    0.01×r+↑s÷1024↑

    ●トリガを定義した表の場合に加算します。

    0.3×u+0.2×v+0.1×w+↑x÷1024↑+0.2×y

    ●外部キーを定義した表の場合に加算します。

    1.3×z

    ●被参照表の場合に加算します。

    0.2+0.1×aa

    ●検査制約を定義した表の場合に加算します。

    0.1×ab+↑ac÷1024↑

    ●部分構造インデクスを定義した表の場合に,部分構造インデクスごとに加算します。

    0.1×ad+↑ae÷1024↑+↑af÷1024↑

    ●圧縮表の場合に,加算します。

    0.08×ag

    計算式3

    ●パブリックビュー表の場合に加算します。

    0.1+(0.1×t)

    ●ビュー表の構成列が抽象データ型となる場合に加算します。

    0.3×j