付録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(単位:バイト)
q1:列のデータ型がDECIMAL型以外の列最適化情報数,及び精度31けたまでのDECIMAL型の列最適化情報数の合計
q2:列のデータが精度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