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

DB エリアの設計

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

SQL 例

3.4  DB エリアの設計

作業表用

DB

エリアです。マスタディレクトリ用

DB

エリアとディクショナリ用

DB

エリアは,XDBの開始時に自動的に作成されます。このため,マスタディレクトリ用

DB

エリアとディクショナリ用

DB

エリアについては,ページサイズや,セグメント サイズなどを設計する必要はありません。容量見積もりだけを実施してください。

3.4.2 ページサイズを決めるときの考慮点

ページサイズを決めるときの考慮点を

DB

エリアの種類ごとに説明します。

なお,ページサイズは,XDBサービス定義の

eexdbarea

オペランドの

-p

オプションに バイト単位で指定します。

(1) 表用 DB エリアの場合

表用

DB

エリアのページサイズを決めるときの考慮点を次に示します。

ページサイズは,基本行が格納できる長さが最低限必要となります。一つの

DB

エリ アに複数の表を格納する場合は,表の中で最大の基本行が格納できる長さにしてくだ さい。基本行が格納できる長さがない場合,XDBの開始時にエラーとなり,XDBを 開始できません。

基本行の長さの求め方については,「3.5(3)(b)データ長一覧」を参照してください。

1

ページ中に格納できる最大行数は

255

行です。そのため,行長の合計に比べてペー ジサイズが大き過ぎると,使用できないむだな領域が発生し,データの格納効率が悪 くなります。

例えば,行長が

100

バイトのときに,1ページに格納できるデータは,最大「100バ イト×

255

行=

25500

バイト」となります。このとき,ページサイズを

32768

バイ トとすると,「32768バイト−

25500

バイト=

7268

バイト」の領域が,使用できない むだな領域になります。

(2) インデクス用 DB エリアの場合

ページ長は基本的に大きくしてください。インデクスを定義した列や,SQLの発行内容 を考慮して最適なページ長を決定してください。

(3) 作業表用 DB エリアの場合

作業表用

DB

エリアには,表とインデクスを一緒に格納するため,データページとイン デクスページの両方の観点からページサイズを検討する必要があります。

作業表の構成列,および作業表に定義されるインデクスの構成列については,「4.3.4 作 業表を作成する

SQL」を参照してください。

3.4.3 セグメントサイズを決めるときの考慮点

セグメントサイズを決めるときの考慮点を

DB

エリアの種類ごとに説明します。

なお,セグメントサイズは,XDBサービス定義の

eexdbarea

オペランドの

-s

オプショ ンにページ数単位(1セグメントを構成するページ数)で指定します。

(1) 表用 DB エリアまたはインデクス用 DB エリアの場合

表用

DB

エリアまたはインデクス用

DB

エリアのセグメントサイズを決めるときの考慮 点を次に示します。

セグメントサイズは,通常,10〜

20

ページにします。

一つのセグメントには一つの表または一つのインデクスが格納されます。そのことを 考慮してセグメントサイズを決めてください。

例えば,データ件数が少ない表またはインデクスを格納する場合は,セグメントサイ ズを

1

にして,むだな領域を作らないようにしてください。

(例)

ページ長が

32768

バイト,セグメントサイズが

10

ページの

DB

エリアに,1行しか 格納しない表を格納する場合,9ページ分(294912バイト)が使われません。この場 合,セグメントサイズを

1

ページにして,むだな領域を作らないようにします。

(2) 作業表用 DB エリアの場合

作業表用

DB

エリアは,ほかの

DB

エリアと構造が異なり,セグメント単位ではなく ページ単位で管理されています。そのため,作業表用

DB

エリアのセグメントサイズは 指定できません(セグメントサイズについての設計を行う必要はありません)。

3.4.4 DB エリアの共用メモリ面数を決めるときの検討項目

表用

DB

エリアおよびインデクス用

DB

エリアの場合,ページサイズとセグメントサイ ズを決めたあとに,次に示す項目を決めます。

DB

エリアの共用メモリ

1

面分のサイズ

XDB

の開始時に確保する共用メモリ面数

共用メモリ面数の上限

これらの項目を決めると,DBエリアの初期サイズ,および

DB

エリアの自動増分時の

1

回当たりの増加量が決まります。

DB

エリアのページおよびセグメントと共用メモリ

1

面の関係を次の図に示します。

3-6 DB

エリアのページおよびセグメントと共用メモリ

1

面の関係

説明

この図の場合,XDBの開始時に確保する共用メモリ面数が

2

面で,共用メモリ面数 の上限が

5

面になっています。

■共用メモリ

1

面分のサイズ

DB

エリアの共用メモリ

1

面分のサイズは,DBエリアの自動増分時に増分する容量 になります。DBエリアの共用メモリ

1

面分のサイズは,eexdbareaオペランドの

-l

オプションで指定します。

XDB

の開始時に確保する共用メモリ面数

XDB

の開始時に確保する共用メモリ面数は,eexdbareaオペランドの

-a

オプショ ンの第

1

引数で指定します。

■共用メモリ面数の上限

DB

エリアとして確保できる共用メモリ面数の上限を指定できます。共用メモリ面数 の上限は,eexdbareaオペランドの

-a

オプションの第

2

引数で指定します。

3.4.5 共用メモリの固定化

DB

エリアが使用する共用メモリのページングによって性能が低下している場合,DBエ リアが使用する共用メモリを固定化して,ページングの防止を検討してください。DBエ リアが使用する共用メモリを固定化する場合は,xdb_memory_fixedオペランドに

Y

を 指定します。

ただし,マシンの実メモリサイズが小さい場合に

DB

エリアが使用する共用メモリを固 定化すると,ほかの用途で使用している共用メモリでページングの発生回数が増加し,

システム全体の性能が低下するおそれがあります。したがって,DBエリアが使用する共 用メモリサイズや,ほかのプログラムが使用する共用メモリサイズ,およびマシンの実 メモリサイズを考慮して,DBエリアが使用する共用メモリを固定化するかどうかを決め てください。

また,DBエリアが使用する共用メモリサイズによっては,共用メモリを固定化できる上 限値(OSの上限値)を超えてしまい,xdb_memory_fixedオペランドだけでは,共用メ モリを固定化できないことがあります。この場合,TP1/Server Baseのユーザサービス 定義の

setrlimit_memlock

オペランドで

OS

の上限値を変更してください。このオペラ ンドを指定すると,共用メモリを固定化できるようになります。setrlimit_memlockオ ペランドについては,「6.4 TP1/Server Baseのユーザサービス定義の設定」の「set形 式のオペランド」を参照してください。

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