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のユーザサービス 定義の