| Symfoware(R) Server RDBユーザーズガイド データベース定義編 - FUJITSU - | 
| 目次
			索引    | 
 第4章 格納構造
第4章 格納構造
各格納構造ごとに、必要となるデータベーススペース量の見積りを示します。計算式で使用する使用率などの値は目安値を後述しますが、これらの値はデータに依存して異なるため、値に幅があります。余裕をもって見積もる(安全率を乗算する)ことをお勧めします。












RANDOM構造のプライム部やオーバフロー部、BTREE構造のデータ部やインデックス部における使用率(各ページの平均使用率)やRANDOM構造のオーバフロー率(総レコード数に対するオーバフロー部へのあふれ率)は、データのキー値およびデータの追加、削除の順番に依存して変動します。スペース量を見積もる場合は、それぞれの値に対して、以下のような目安値を使用して見積りを行います。
なお、ページ内レコード数が少ない場合、各使用率は低い値となり、オーバフロー率については高い値となります。
| プライム部の使用率 : 0.4 〜 0.8 オーバフロー部の使用率 : 0.2 〜 0.5 オーバフロー率 : 0.2 〜 0.6(クラスタキーに一意性制約が 設定されている場合) : 0.9 〜 1.0(クラスタキーに一意性制約が 設定されていない場合) BTREEデータ部の使用率 : 0.5 BTREEインデックス部の使用率 : 0.5 | 
BTREE構造のデータ部やインデックス部ではキーを圧縮して格納します。この場合のキー圧縮率は以下のような目安値を使用して見積りを行います。
| BTREEデータ部のキー圧縮率 : 0.3 BTREEインデックス部のキー圧縮率 : 0.5 | 
例1
SEQUENTIAL構造のスペース量の見積り次のような構造の発注表(総レコード数:30000件)の所要スペース量を計算します。
格納構造:SEQUENTIAL構造
ページ長:32 Kバイト
安全率:1.3
注1) 可変長列がないため、可変長に関する項はすべて0で計算
注2) 小数点切捨て
注3) 35は(30000/859)を小数点切上げで計算
注4) スペース量をページ長の整数倍に補正
例2
RANDOM構造のスペース量の見積り次のような構造の発注表(総レコード数:30000件)の所要スペース量を計算します。
格納構造は、次のように設計します。また、クラスタキーはPRIMARY KEY(一意性制約が設定されている)であるため、計算式は、RANDOM構造(クラスタキーに一意性制約が設定されている場合)を使用します。
格納構造:取引先と取引製品をクラスタキーとしたRANDOM構造
ページ長:プライム部、オーバフロー部ともに4Kバイト
プライム部の使用率:0.5
オーバフロー部の使用率:0.2
オーバフロー率:0.2
安全率:1.3
注1) プライム部オーバフロー部ともにページ長が等しいためページ内レコード数も同じ
注2) 小数点切捨て
注3) 423は(30000/71)を小数点切上げで計算
注4) ページ数を2の巾乗化
注5) 85は(30000×0.2/71)を小数点切上げで計算
注6) スペース量をページ長の整数倍に補正
例3
OBJECT構造のスペース量の見積り次のような構造の製品写真(総レコード数:3000件)の所要スペース量を計算します。
格納構造:OBJECT構造
ページ長:32Kバイト
安全率:1.3
注) 小数点切上げ
例4
BTREE構造のスペース量の見積り次のような構造の発注表(SEQUENTIAL構造/総レコード数:30000件)に対して、仕入価格と発注数を2次キーとしてインデックスを付加する場合の所要スペース量を計算します。
格納構造:仕入価格と発注数量を2次キーとしたBTREE構造
ページ長(データ部):16Kバイト
ページ長(インデックス部):2Kバイト
使用率(データ部):0.5
使用率(インデックス部):0.5
圧縮率(データ部):0.3
圧縮率(インデックス部):0.5
注1) 小数点切上げ
注2) 小数点切捨て
注3) (252/25)は小数点切捨て
注4) スペース量をページ長の整数倍に補正
注1) 小数点切上げ
注2) (192/19)は小数点切捨て
注3) 小数点切上げ
注4) スペース量をページ長の整数倍に補正
| 列のデータ属性 | 長さ(バイト) | |
|---|---|---|
| 固定長 | CHARACTER(n) | n | 
| NATIONAL CHARACTER(n) | n × 2 | |
| NUMERIC(p,q) | j (注1) | |
| DECIMAL(p,q) | j (注1) | |
| SMALLINT | 2 | |
| INTEGER | 4 | |
| REAL | 4 | |
| DOUBLE PRECISION | 8 | |
| TIMESTAMP | 7 | |
| DATE | 4 | |
| TIME | 3 | |
| INTERVAL YEAR(p) | m    (注2) | |
| INTERVAL MONTH(p) | m (注2) | |
| INTERVAL DAY(p) | m    (注2) | |
| INTERVAL HOUR(p) | m    (注2) | |
| INTERVAL MINUTE(p) | m    (注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キロバイトとなります。
| 目次
			索引    |