• 検索結果がありません。

表の設計

ドキュメント内 TP1/EE/Extended Data Cache 使用の手引 (ページ 59-63)

(2) ページ

3   データベースの設計

3.2  表の設計

ここでは,表を定義するときの考慮点について説明します。

3.2.1 列に定義できるデータ型

表の各列に適切なデータ型を定義してください。列に定義できるデータ型を次の表に示 します。

3-1 列に定義できるデータ型

各データ型の詳細については,マニュアル「TP1/EE/Extended Data Cache SQLプログ ラミング」を参照してください。

3.2.2 セグメントの再利用の設定

表データの格納効率を重視する場合は,セグメントの再利用の設定を検討してください。

(1) セグメントの再利用とは

XDB

では,行の追加や更新によって新規ページの割り当てが発生した場合,最終セグメ ント(最後に確保したセグメント)に新規ページを確保します。最終セグメントに新規 ページを割り当てる空き領域がない場合は,新たに新規セグメントを確保して新規ペー ジを割り当てます。

このように,通常は,最終セグメント以外のセグメントの空き領域(行の削除によって 発生した空き領域)を利用しません。このため,行の削除が頻繁に発生すると,時間が 経過するに連れて表データの格納効率が悪くなります。

表データの格納効率を上げるには,セグメントの再利用を設定します。セグメントの再 利用を設定すると,最終セグメントに新規ページを割り当てる空き領域がない場合,新 規セグメントを確保しないで,確保済みセグメントから空きページ(未使用ページまた は空きがある使用中ページ)を探し,そのページに表データを格納します。

表データの格納効率を重視する場合は,セグメントの再利用を検討してください。格納 効率よりも性能を重視する場合は,セグメントの再利用は行わないでください。

項番 分類 データ型 説明

1 数データ INTEGER 整数を扱うデータ型です。

2 DECIMAL 固定小数点数を扱うデータ型です。

3 文字データ CHARACTER 固定長文字列を扱うデータ型です。

4 時刻印データ TIMESTAMP 年,月,日,時,分,秒の六つの属性を持 つ時刻印のデータ型です。

グメントの再利用契機を指定します。

■セグメントの再利用契機

セグメントの再利用契機には,セグメントの再利用を開始する契機をセグメント数 で指定します。例えば,セグメントの再利用契機に

3(SEGMENT REUSE 3)を指

定した場合,表に三つのセグメントが割り当てられている状態で,最終セグメント に空き領域がないときに,セグメントの再利用が行われます。

セグメントの再利用の概要を次の図に示します。

3-2 セグメントの再利用の概要

参考

確保済みセグメントから空き領域(未使用ページまたは空きがある使用中ページ)を探す 処理を空き領域探索といいます。

空き領域探索によって探したページに表データを格納した場合,次回の空き領域探索で は,前回,表データを格納したページの位置から探索を開始します。

次に示す場合は,セグメントの再利用を設定しているかどうかに関係なく,空き領域探索 が発生します。

・メモリ領域不足によって,DBエリアの自動増分機能でDBエリアを拡張できない場合

・最大確保共用メモリ面数に達していて,かつ新規セグメントを確保できない場合

セグメントの再利用を設定している場合は,次に示すときにも空き領域探索が発生しま す。

・最大確保共用メモリ面数に達する前の状態で,DBエリアの自動増分機能でDBエリア を拡張しなければ新規セグメントを確保できないとき

(2) セグメントの再利用を行うと効果が期待できるケース

データの格納効率を重視する場合に,セグメントの再利用を行ってください。

例えば,行の削除が多く発生し,最終セグメント以外に空き領域が多く発生するような 場合にセグメントの再利用を行うと,データの格納効率の面で効果が期待できます。

セグメントの再利用を設定するには,CREATE TABLE文の

SEGMENT REUSE

句で

1

回目のセグメントの再利用契機と

2

回目以降のセグメントの再利用契機を指定します。

SEGMENT REUSE

句の指定例を次に示します。

指定例

このように指定した場合,セグメントの再利用契機は,セグメント数が

4,6(4

2

6)

,8(4+

2

2

8)

,…のときとなります。

■再利用契機に指定する値の目安

表に格納されている行数の増減予測が難しい場合や,表データの格納効率を重視す る場合は,「SEGMENT REUSE 1,1」と指定してください。この場合,新規セグメ ントを確保する前に,必ず空き領域探索が行われるため,表データの格納効率が最 も良くなります。ただし,新規セグメントを確保する前に,空き領域探索が必ず発 生するため,性能面に影響が出ることがあります。

まり発生しません。そのため,セグメントの再利用を行っても,データの格納効率の面 で効果が期待できません。

セグメントを再利用しない場合は,SEGMENT REUSE句に

NOUSE

を指定するか,ま たは

SEGMENT REUSE

句の指定を省略してください。

ドキュメント内 TP1/EE/Extended Data Cache 使用の手引 (ページ 59-63)