ページの先頭行へ戻る
Interstage Business Application Server チューニングガイド
FUJITSU Software

3.1.3 データベーススペース量の見積り式

CYCLIC構造のエントリに必要なデータベーススペースの見積りは、以下のように計算します。

(1) ユーザログレコード長

固定部 + 可変長データ制御部 + 可変長部 + NULL指示部 + 26

固定部 :固定長列の長さの総和

可変長データ制御部:可変長列の数 × 4 + 2

可変長部 :可変長列の長さの総和

NULL指示部 :対象実表のNOT NULL指定なしの列の数

(2) トランザクション情報レコード長

固定部 + 可変長データ制御部 + 可変長部 + NULL指示部 + 26

固定部 :固定長列の長さの総和

可変長データ制御部 :可変長列の数×4+2

可変長部 :可変長列の長さの総和

NULL指示部 :対象実表のNOT NULL指定なしの列の数

可変長部には、ユーザログ本文は含めません。

(3) 制御情報レコード長

固定部 + 可変長データ制御部 + NULL指示部 + 26

固定部 :固定長列の長さの総和

可変長データ制御部:可変長列の数 × 4 + 2

NULL指示部 :対象実表のNOT NULL指定なしの列の数

制御情報レコードには、可変長列の長さは加えません。

(4) ページ内格納域長

ページ長 - 110

(5) ページ越えレコードの判断

「(4) ページ内格納域長≧(1)ユーザログレコード長」の場合は、(6)(7)を用いてスペース量を計算します。

「(4) ページ内格納域長<(1)ユーザログレコード長」の場合は、(8)(9)を用いてスペース量を計算します。

(2)トランザクション情報レコード、または(3)制御情報レコードについては、(6)(7)を用いてスペース量を計算します。

(6) ページ内レコード数

トランザクション情報レコードのスペース量を求める場合は、(1)ユーザログレコード長を(2)トランザクション情報レコード長に置き換えてください。

制御情報レコードのスペース量を求める場合は、(1)ユーザログレコード長を(3)制御情報レコード長に置き換えてください。

(7) スペース量

安全率については、1.3以上を指定し、見積もります。
算出されたスペース量は、ページ長の整数倍になるように補正してください。
(6)で算出したレコードの種類により、(7)の値は以下のいずれかを表します。

ユーザログレコードのスペース量

トランザクション情報レコードのスペース量

制御情報レコードのスペース量

(8) レコード格納に必要なページ数

(9) スペース量

{(8) レコード格納に必要なページ数 × 総レコード数(注) + CPU数 + 1} × ページ長 × 安全率

安全率については、1.3以上を指定し、見積もります。
算出されたスペース量は、ページ長の整数倍になるよう補正してください。

(10) エントリスペース量

ユーザログレコードのスペース量+トランザクション情報レコードのスペース量+制御情報レコードのスペース量
(7)または(9)でそれぞれ算出

(11) 総スペース量

(10)エントリスペース量 × エントリ数

注)総レコード数の目安は、以下のとおりです。

CYCLIC構造のスペース量の見積りの例を示します。見積もる業務ログ表の構造は、以下のとおりです。

  • システム数:1 (起動・再起動をそれぞれ1回)

  • エントリあたりの並列実行するトランザクション数:64

  • 1つのトランザクションで取得するレコード件数:100件

  • CPU数:1

  • 所要スペース量:7エントリ

    CREATE TABLE ULOG.業務ログ表 (
    LOG_TYPE CHAR(1) DEFAULT LOG_TYPE,
    SEQUENCE_NO CHAR(30) DEFAULT ULOG_SEQUENCE,
    TRANSACTION_ID CHAR(20) DEFAULT TRANSACTION_ID,
    SYSTEM_NAME CHAR(8) DEFAULT SYSTEM_NAME,
    CONTEXT_ID VARCHAR(1024),
    分割キー CHAR(5) NOT NULL,
    任意列 INTEGER,
    ユーザログ本文 BLOB(50K)
    );

なお、以下の条件で計算します。

  • 格納構造:CYCLIC構造

  • ページ長:32K

  • 安全率 :1.3

    ユーザログレコード長 =( LOG_TYPE + SEQUENCE_NO + TRANSACTION_ID + SYSTEM_NAME )
    + ( 可変長列の数(注1) × 4 + 2 ) + ( 分割キー + 任意列 )(注2)
    + ( CONTEXT_ID + ユーザログ本文 ) + NULL指示数 + 26
    =( 1 + 30 + 20 + 8 ) + ( 2 × 4 + 2 ) + ( 5 + 4 ) + ( 1024 + 51200 ) + 7 + 26
    = 52335

    ユーザログレコードのページ内レコード数
    = ユーザログレコード長 / ( ページ内格納域長 - 66 )
    = 52335 / ( 32768 - 110 -66 )
    = 1.6057621 ・・・
    = 2 (注3)

    ユーザログレコードのスペース量
    = ( レコード格納に必要なページ数 × 総レコード数 + CPU数 + 1 )
    × ページ長 × 安全率
    = ( 2 × ( 64 × 100 ) + 1 + 1 ) × 32768 × 1.3
    = 545344716.8 ( バイト )
    = 532576 ( Kバイト ) (注4)

    トランザクション情報レコード長
    = ( LOG_TYPE + SEQUENCE_NO + TRANSACTION_ID + SYSTEM_NAME )
    + ( 可変長列の数(注1) × 4 + 2 ) + CONTEXT_ID + NULL指示数 + 26
    = ( 1 + 30 + 20 + 8 ) + ( 2 × 4 + 2 ) + 1024 + 6 + 26
    = 1125

    トランザクション情報レコードのページ内レコード数
    = ( ページ長 - 110 ) / トランザクション情報レコード長
    = ( 32768 - 110 ) / 1125
    = 29.029333 ・・・
    = 29 (注5)

    トランザクション情報レコードのスペース量

    = ( トランザクション情報レコード数 / トランザクション情報レコードのページ内レコード数 + CPU数 + 1 )
    × ページ長 × 安全率
    = ( ( 64 × 2 ) / 29 + 1 + 1 ) × 32768 × 1.3
    = ( 5 + 1 + 1 ) × 32768 × 1.3 (注6)
    = 298188.8 ( バイト )
    = 320 ( Kバイト ) (注4)

    制御情報レコード長 = ( LOG_TYPE + SEQUENCE_NO + TRANSACTION_ID + SYSTEM_NAME )
    + ( 可変長列の数(注1) × 4 + 2 ) + NULL指示数 + 26
    = ( 1 + 30 + 20 + 8 ) + ( 2 × 4 + 2 ) + 6 + 26
    = 101

    制御情報レコードのページ内レコード数
    = ( ページ長 - 110 ) / 制御情報レコード長
    = ( 32768 - 110 ) / 101
    = 323.346534 ・・・
    = 323 (注5)

    制御情報レコードのスペース量
    = ( 総制御情報レコード数 / 制御情報レコードのページ内レコード数 + CPU数 + 1 )
    × ページ長 × 安全率
    = ( 2 / 323 + 1 + 1 ) × 32768 × 1.3
    = ( 1 + 1 + 1 ) × 32768 × 1.3 (注6)
    = 127795.2 ( バイト )
    = 128 ( Kバイト ) (注4)

    総スペース量 = (ユーザログレコードのスペース量
    + トランザクション情報レコードのスペース量 + 制御情報レコードのスペース量)
    × エントリ数
    = ( 532576 + 320 + 128 ) × 7
    = 3731168 ( Kバイト )
    = 3644 ( Mバイト ) (注3)

    注1) 可変長列の数は、CONTEXT_ID、ユーザログ本文の数

    注2) 分割キーと任意列の列の長さは、以下の表を元に計算してください。

    3) 小数点切上げ

    4) スペース量をページ長の整数倍に補正

    5) 小数点切捨て

    注6) 5は(128/29)を、1は(2/323)を、それぞれ小数点切上げで計算

列のデータ属性

長さ(バイト)

固定長

CHARACTER(n)

n

NATIONAL CHARACTER(n)

n × 2

NUMERIC(p,q)

j (注1)

DECIMAL(p,q)

j (注1)

SMALLINT

2

INTEGER

4

TIMESTAMP

7

DATE

4

TIME

3

INTERVAL YEAR(p)
[ TO MONTH ]

m (注2)
m+1 (注2)

INTERVAL MONTH(p)

m (注2)

INTERVAL DAY(p)
[{ TO HOUR |
TO MINUTE |
TO SECOND }]

m (注2)
m+1 (注2)
m+2 (注2)
m+3 (注2)

INTERVAL HOUR(p)
[{ TO MINUTE |
TO SECOND }]

m (注2)
m+1 (注2)
m+2 (注2)

INTERVAL MINUTE(p)
[ TO SECOND ]

m (注2)
m+1 (注2)

INTERVAL SECOND(p)

m (注2)

可変長

CHARACTER VARYING(n)

a (注3)

NATIONAL CHARACTER VARYING(n)

a × 2 (注3)

BLOB(nk)

b × 1024 + 6(注4)

1) jはpの値に依存して以下の値になります。

pの値(精度)

j

1 ~ 2

1

3 ~ 4

2

5 ~ 6

3

7 ~ 9

4

10 ~11

5

12 ~14

6

15 ~16

7

17 ~18

8

2) mはpの値に依存して以下の値になります。

pの値

m

1 ~2

2

3 ~4

3

5 ~9

5

3) aは平均文字数です。最大n文字となります。

4) bは平均データ長(バイト)です。最大nキロバイトとなります。