バージョン 8.1.3
 —  DBA タスク  —

Adabas データベースの定義

このドキュメントでは Adabas データベースを定義するステップについて説明します。 DBA は新しいデータベースを定義する前に各ステップに示されたドキュメントを読み、理解しておく必要があります。

新しいデータベースを定義するには、次の手順に従います。

これらのステップが正しく完了すれば、ADACMP および ADALOD ユーティリティを使用して、ユーザーファイルをデータベースにロードできます。


ステップ 1:データベースに必要なサイズを見積ります。

ニュークリアスに必要なコンポーネント

Adabas ニュークリアスには、データストレージ、アソシエータ、およびワークエリアの 3 つのデータベースコンポーネントが必要です。

データストレージ

データストレージコンポーネントには、データベース内の各ファイルの圧縮データレコードが含まれます。

アソシエータ

アソシエータには、データベース内の各ファイルに対応する要素、またデータベース全体に対応する要素が含まれます。

データベース内のファイルごとに、インバーテッドリスト、アドレスコンバータ、フィールド定義テーブル(FDT)がアソシエータに含まれます。

データベース全体については、アソシエータにストレージ管理テーブルとカップリングリストが含まれます。

ワーク

ワークワークエリアは、次の 4 つのパートに情報を格納します。

その他のコンポーネント

ソートエリアと一時エリア

Adabas ユーティリティ ADAINV、ADALOD、および ADAVAL は、データのソートと中間データの格納のために、さらに 2 つのデータセット、SORT と TEMP を必要とします。

TEMP や SORT のサイズは、実行するユーティリティ機能に応じて異なります。 これらのデータセットは、ジョブの実行中に割り当てと解放を行うか、永久的なデータセットを割り当てて再利用することができます。

ログ

Adabas には、次のオプションログがあります。

注意:
CLOG、PLOG、および RLOG の各データセットは、16,777,215(x'FFFFFF')ブロック/RABN に制限されます。

一般的なスペース要件

アソシエータ(NI、UI、および AC)とデータストレージに必要なスペースは、それぞれ ADALOD ユーティリティと ADACMP ユーティリティによってファイルごとに自動的に計算されます。 ファイルに対して特定のスペースを割り当てたいとき、またはこれらのユーティリティを実行せずにファイルの必要スペースを見積りたいときは、この章に示された公式を使って計算することができます。

データベースの設定時に、データベースに最終的にロードされるファイルの数やサイズが分からない場合は、アソシエータやデータストレージに余分なスペースを割り当てる必要はありません。なぜなら、ADADBS ユーティリティの ADD または INCREASE 機能を使って、後からスペースを増やすことができるからです。

しかし、アソシエータやデータストレージの初期のスペース割り当てでは、現在計画されているすべてのファイルをロードできるだけでなく、適量のデータベース拡張(新ファイルの追加または既存のファイルの更新)が可能である必要があります。

アソシエータスペースの見積り時には、データベース内の各ファイル(ノーマルインデックス、アッパーインデックス、アドレスコンバータ)の見積もりに加えて、データベース全体としての次の要件を追加しなければなりません。

一般的なスペース見積り手順

  1. ファイルごとの要件を見積った後、それらを加算してデータベース全体の見積りを出します。

  2. データベース全体について次の要件を見積ります。

見積りの公式

以降の各セクションでは、各コンポーネントに割り当てるスペースを見積る公式を記述します。

公式の計算規則

公式は一般的な規則に従って計算します。つまり、各式は次の順序で評価します。

  1. かっこ内の要素

  2. 乗算および除算

  3. 加算および減算

  4. 左から右へ(要素の優先レベルが同じであれば、左側にある要素を先に評価)。

ノーマルインデックス(NI)

ファイルの各ディスクリプタに必要なノーマルインデックススペースの見積りには、次の公式を使用します。

NIRBYTES = ISNSIZE * AVUQVAL * RECORDS + DESCVALS * (AVLENG + 2)

ここでは次の内容を表しています。

NIRBYTES ノーマルインデックスの必要スペースをバイト数で示します。
ISNSIZE ファイル内の ISN 長(3 または 4 バイト)。 ISN 長は ADALOD パラメータの ISNSIZE に指定します。
AVUQVAL 各レコードに存在するディスクリプタのユニーク値の平均個数を示します。
RECORDS ファイルに収容するレコード数。ADALOD の MAXISN パラメータによって指定します。
DESCVALS ファイル内に存在するディスクリプタのユニーク値の個数を示します。
AVLENG ディスクリプタの値の平均長を示します。

AVUQVAL

ディスクリプタがマルチプルバリューフィールド(MU)またはピリオディックグループ(PE)の一部である場合を除いて、AVUQVAL は 1 以下の値です。

ディスクリプタが NU(空値省略)オプション付きで定義されている場合、AVUQVAL は各レコードに存在する値の平均個数から空値(空のフィールド)を含むレコードの割合を引いた値になります。 例えば、各レコードにディスクリプタ値が 1 つずつ存在し、値の 20 パーセントが空値である場合は次のようになります。

AVUQVAL = 1 - 0.2 = 0.8

同様に、MU フィールドが各レコードに平均 10 個の値をもっていて、値の 20 パーセントが空値である場合は次のようになります。

AVUQVAL = 10 - 2 = 8

AVLENG

ディスクリプタフィールドが FI(固定長)オプション付きで定義されていなければ、AVLENG は長さバイトを含むフィールドの平均圧縮長になります。 ディスクリプタが FI オプション付きで定義されている場合、AVLENG はフィールドの標準長に等しくなります。

ISNSIZE * AVUQVAL * RECORDS

ISNSIZE * AVUQVAL * RECORDS は、ISN の格納に必要なスペースを表します。 多数の重複値をもったディスクリプタには、重要な要因です。

DESCVALS * (AVLENG + 2)

DESCVALS * (AVLENG + 2) は、ディスクリプタ値の格納のために必要なスペースを表します。 多数のユニーク値をもったディスクリプタにとっては、大事な要因となります。

バイトからブロックへの変換

バイトをブロックに変換するには、次の公式を使います。 結果は次のブロックに切り上げます。

 NIRBLOCKS = NIRBYTES / (ASSOBLKSIZE * (1 - PADFACTOR / 100))

ここでは次の内容を表しています。

NIRBLOCKS NI の必要スペースをブロック数で示します。
NIRBYTES NI の必要スペースをバイト数で示します(NIRBYTES の公式より)。
ASSOBLKSIZE ASSOR1 ブロック長。 デバイスタイプおよびコンポーネント別にブロックサイズのリストを確認するには、該当するシステムプラットフォーム(z/OS、VSE、z/VM、または BS2000)の『Adabas インストールマニュアル』に記載されている「デバイスとファイルについて」を参照してください。
PADFACTOR ASSOR1 ブロックパディングファクタ。1~90 の値として表現するブロック長のパーセント。

次の各例では、ASSOR1 は 3380 デバイス上に格納されています。

例 1

ディスクリプタ AA は各レコードに 1 個の値を持ち、空値はありません。 ファイルには、50 個の異なる AA 値が存在し、 圧縮された値の長さの平均は 3 バイトです。

ISNSIZE=3
MAXISN=20000
PADFACTOR=10 (%)

NIRBYTES = 3 * 1 * 20,000 + 50 * (3 + 2) = 60,000 + 250 = 60,250 bytes
NIRBLOCKS = 60,250 / (2004 * (1 - 0.1)) = 33.41 = 34 blocks

例 2

ディスクリプタ BB は各レコードに 1 個の値を持ち、空値はありません。 ファイルには 20,000 個の異なる BB 値が存在し、 圧縮された値の長さの平均は 10 バイトです。

ISNSIZE=4
MAXISN=20000
PADFACTOR=10 (%)

NIRBYTES = 4 * 1 * 20,000 + 20,000 * (10 + 2) = 80,000 + 240,000 = 320,000 bytes
NIRBLOCKS = 320,000 / (2004 * (1 - 0.1)) = 177.42 = 178 blocks

例 3

ディスクリプタ CC は各レコードに平均 10 個のオカレンスと 3 個の空値をもった、空値省略のマルチプルバリュー(MU)フィールドです。 ファイルには、およそ 300 個の異なる CC 値が存在し、 圧縮された値の長さの平均は 4 バイトです。

ISNSIZE=3
MAXISN=10000
PADFACTOR=5 (%)

NIRBYTES = 3 * 7 * 10,000 + 300 * (4 + 2) = 210,000 + 1,800 = 211,800 bytes
NIRBLOCKS = 211,800 / (2004 * (1 - 0.05)) = 111.25 = 112

例 4

ディスクリプタ DD はピリオディックグループ内の空値省略フィールドです。 DD は各レコードに平均 5 個の値を持ち、各レコードに平均 3 個の空値があります。 ファイルには、10 個の異なる DD 値が存在し、 圧縮された値の長さの平均は 5 バイトです。

ISNSIZE=4
MAXISN=10000
PADFACTOR=5 (%)

NIRBYTES = 4 * 2 * 10,000 + 10 * (5 + 2) = 80,000 + 70 = 80,070 bytes
NIRBLOCKS = 80,070 / (2004 * (1 - 0.05)) = 42.06 = 43

アッパーインデックス(UI)

ファイル内の各ディスクリプタに必要な UI スペースを見積るには、次の公式を使用します。

UIRBYTES = NIRBLOCKS * (AVDESCLEN + ISNSIZE + RABNSIZE + 1)

ここでは次の内容を表しています。

UIRBYTES UI の必要スペースをバイト数で示します。
NIRBLOCKS NI の必要スペースをブロック数で示します(NIRBLOCKS の公式より)。
AVDESCLEN ディスクリプタ値の平均圧縮長です。
ISNSIZE ファイル内の ISN 長(3 または 4 バイト)。 ISN 長は ADALOD パラメータの ISNSIZE に指定します。
RABNSIZE データベース内の RABN 長(3 または 4 バイト)。 RABNSIZE はデータベース定義時にデータベース内の全ファイルに指定されます。

注意:
RABNSIZE は相対 Adabas ブロック番号の長さだけを参照します。 ブロックサイズは参照しません。

バイトからブロックへの変換

バイトをブロックに変換するには、次の公式を使います。 結果は次のブロックに切り上げます。

UIRBLOCKS = UIRBYTES / (ASSOBLKSIZE * (1 - PADFACTOR / 100))

ここでは次の内容を表しています。

UIRBLOCKS UI に必要なスペースをブロック数で示します。
UIRBYTES UI に必要なスペースをバイト数で示します(UIRBYTES の公式より)。
ASSOBLKSIZE ASSOR1 ブロック長。 デバイスタイプおよびコンポーネント別にブロックサイズのリストを確認するには、該当するシステムプラットフォーム(z/OS、VSE、z/VM、または BS2000)の『Adabas インストールマニュアル』に記載されている「デバイスとファイルについて」を参照してください。
PADFACTOR ASSOR1 ブロックパディングファクタ。1~90 の値として表現するブロック長のパーセント。

この例では、アソシエータは 3380 DASD 上に格納されています。したがって、ASSOR1 は各ブロックに 2004 バイトずつあります。

このファイルに必要な NI ブロック数は 45 バイトです。 ディスクリプタ値の平均圧縮長は 3 バイトです。 データベースには 3 バイト(24 ビット)RABN があり、ファイルには 3 バイト ISN があります。 ASSOR1 ブロックパディングファクタは 5(%)です。

UIRBYTES = 45 * (3 + 3 + 3 + 1) = 450
UIRBLOCKS = 450 / (2004 * (1 - 0.05)) = 450 / 1903.8 = 0.24 = 1 block( a minimum of 2 blocks can be allocated for the UI)

アドレスコンバータ(AC)

ファイルに必要なアドレスコンバータスペースを見積るには、次の公式を使用します。 計算結果は、次の完全なブロックに切り上げます。

ACBLOCKS = (MAXISN +!) * RABNSIZE / ASSOBLKSIZE

ここでは次の内容を表しています。

ACBLOCKS アドレスコンバータに必要なスペースをブロック数で示します。
MAXISN ファイルの MAXISN 設定値。
RABNSIZE データベース内の RABN 長(3 または 4 バイト)。 RABNSIZE はデータベース定義時にデータベース内の全ファイルに指定されます。

注意:
RABNSIZE は相対 Adabas ブロック番号の長さだけを参照します。 ブロックサイズは参照しません。

ASSOBLKSIZE アソシエータのブロックサイズです。 デバイスタイプおよびコンポーネント別にブロックサイズのリストを確認するには、該当するシステムプラットフォーム(z/OS、VSE、z/VM、または BS2000)の『Adabas インストールマニュアル』に記載されている「デバイスとファイルについて」を参照してください。

アソシエータは 3380 DASD 上に格納されています。ASSOR1 は各ブロックに 2004 バイトずつあります。

例 1

MAXISN=2000000
RABNSIZE = 3

ACBLOCKS = (2,000,000 * 3) / 2004 = 6,000,000 / 2004 = 2994.01 = 2995 blocks

例 2

MAXISN=2000000
RABNSIZE = 4

ACBLOCKS = (2,000,000 * 4) / 2004 = 8,000,000 / 2004 = 3992.02 = 3993 blocks

データストレージ

データストレージに必要なスペースを見積るには、次の公式を使用します。 計算結果は、次の完全なブロックに切り上げます。

DATASTORAGE = MAXISN / ((DSBLKSIZE * (1 - (PADFACTOR / 100))) / AVRECLEN)

ここでは次の内容を表しています。

DATASTORAGE データストレージに必要なスペースをブロック数で示します。
MAXISN ファイルの MAXISN 設定値。
DSBLKSIZE データストレージのブロックサイズを次の整数に切り下げた値です。 デバイスタイプおよびコンポーネント別にブロックサイズのリストを確認するには、該当するシステムプラットフォーム(z/OS、VSE、z/VM、または BS2000)の『Adabas インストールマニュアル』に記載されている「デバイスとファイルについて」を参照してください。
PADFACTOR データストレージブロックパディングファクタ。1~90 の値として表現するブロック長のパーセンテージ。
AVRECLEN 平均圧縮レコード長です。

MAXISN = 1000000
平均圧縮レコード長 = 50
モデル 3380 の DATA のブロックサイズ = 4820
データストレージのブロックパディングファクタ = 5(%)

DATASTORAGE = 1,000,000 / ((4820 * (1 - 0.05)) / 50) = 1,000,000 / (4579 / 50) = 1,000,000 / 91 = 10,989.01 = 10,990 blocks

ワークスペース割り当ての見積り

WORK データセットを割り当てるときは、すべてのパーツに十分なスペースを割り当てる必要があります。 許容可能な最小ワークスペースは 300 ブロックです。 ADARUN の 3 つのパラメータを使用して、スペースを次のようにパート 1~4 に分割できます。

注意:
Adabas Transaction Manager バージョン 7.5 以降では、DDWORKR1 の WORK パート 4 はサポートされていません。 代わりに、DDWORKR4 データセットを使用する必要があります。 DDWORKR4 は、WORK パート 4 と同じ目的で使用されるコンテナデータセットですが、クラスタのすべてのメンバと並行して使用できます。 DDWORKR4 データセットは、DDWORKR1 以上のブロックサイズを使用して、通常の方法で割り当てとフォーマットを行う必要があります。 少なくとも、データベースのクラスタの LP パラメータ、またはクラスタと同じ大きさのエクステントが確保される必要があります。

WORK パート 2 は、WORK パート 1 の最終ブロックの次のブロックで開始されます。したがって、パート 2 の最初の RABN は次のようになります。

1 + LP

WORK パート 4 は、WORK パート 2 の最終ブロックの次のブロックで開始されます。したがって、パート 4 の最初の RABN は次のようになります。

1 + LP + LWKP2

WORK パート 1:データ保護情報

並行して実行されるすべてのトランザクションのデータプロテクションエリアが、WORK パート 1(LP)エリアの 1/4 に収まる必要があります。 WORK パート 1 の適切なサイズを確認するための一般的なガイドラインを次に示します。

  1. WORK パート 1 の合計サイズは、1 つの平均トランザクションに必要だと予測されるサイズ(バイト数)の 4 倍に、並行して実行されるトランザクションの最大数をかけた値である必要があります。 この値を WORK ブロックサイズ(バイト数)- 200 で割ってバイト数をブロック数に変換します。

  2. 一部のトランザクションが非常に長い場合は、これらのトランザクション単独と、並行して実行されるその他すべての短いトランザクションを使用して、1 つの平均トランザクションのサイズを求めます。

  3. 1 つの平均トランザクションのサイズは、トランザクション当たりの更新(変更、追加、削除)の平均回数に、更新ごとに必要であると推測されるバイト数をかけて求めます。 これに ET データ用と ET レコード用のスペースをバイト数で加算します。

  4. 更新ごとに必要なサイズを求めるには、平均圧縮レコード長(バイト数)に 4 をかけ(ビフォーイメージ、アフターイメージ、それぞれの DVT スペース)、プロテクションレコードヘッダーごとに 100 バイト(100 x 4)を加算します。

このガイドラインを公式で表すと次のようになります。

WK1= ( 4 * TASIZE * TAP ) / ( BLKSIZE - 200 )

ここでは次の内容を表しています。

WK1 WORK パート 1 に必要なスペースをブロック数で示します。
TASIZE 単一平均トランザクションサイズをバイト数で示します。
TAP 実際に並行して実行する最大トランザクション数です。
BLKSIZE WORK ブロックサイズをバイト数で示します。
TASIZE= ( ( ( 4 * AVCRL ) + 400 ) * UPDTA ) + ETDATA + 100

ここでは次の内容を表しています。

AVCRL 平均圧縮レコード長をバイト数で示します。
UPDTA トランザクション当たりの平均更新回数です。
ETDATA ET データの平均長をバイト数で示します。

AVCRL = 300 バイト、UPDATA = 4、ETDATA = 200 バイトのとき

TASIZE= ( ( ( 4 * 300 ) + 400 ) * 4 )+ 200 + 100 = 6700 bytes

TAP = 100、BLKSIZE = 5492 のとき

WK1 = ( 4 * 6700 * 100 ) / ( 5492 - 200 ) = 506.46 blocks

WORK パート 2:検索コマンドの中間結果

WORK パート 2 エリアに必要なスペースを見積るには、次の公式を使用します。 計算結果は、次の完全なブロックに切り上げます。

WORK2 = 22 + 2 * ((4 * RECORDS) / (BLKSIZE - 16))

ここでは次の内容を表しています。

WORK2 WORK パート 2 に必要なスペースをブロック数で示します。
RECORDS
大半のレコードをもったファイル内のレコード数。 この数値は次のようになります。
TOPISN - MINISN + 1
上記の意味は次に示すとおりです。
TOPISN 現在ファイルで使用されている最高の ISN です。
MINISN ファイルで使用されている最低の ISN です。
MINISN 値は ADACMP/ADALOD の MINISN パラメータで指定され、デフォルトは 1 です。 ADAREP ユーティリティを使えば、データベース内のファイルの TOPISN と MINISN 値を表示できます。
BLKSIZE WORK データセットが格納されているデバイスのブロックサイズです。 デバイスタイプおよびコンポーネント別にブロックサイズのリストを確認するには、該当するシステムプラットフォーム(z/OS、VSE、z/VM、または BS2000)の『Adabas インストールマニュアル』に記載されている「デバイスとファイルについて」を参照してください。

注意:
WORK パート 2 の各ブロックにつき、Adabas 内部テーブルは 1 バイトのストレージを必要とします。

データベース内の最大ファイルのレコード数は 500,000 です。 WORK データセットは 3380 デバイス上に格納されています。

WORK2 = 22 + 2 * ((4 * 500,000) / (5492 - 16)) = 752.46 = 753 blocks

WORK パート 3:検索コマンドの結果の ISN リスト

Adabas はパート 1(データ保護情報)とパート 2(中間結果)エリアを割り当てた後、残りのワークスペースを WORK パート 3(ISN 結果リスト)に割り当てます。

パート 3 の最小必要スペースは 50 ブロックです。

このエリアに供給したスペースが不十分であると、現在 ISN リストによって使用されたスペースが解放されるまで、Adabas はこれ以上の検索コマンドを実行できない場合があります。 WORK パート 3 エリアに必要なスペースを見積るとき、次の要因について考慮する必要があります。

セッション中にコマンド当たり平均 25 個の結果 ISN を伴った検索コマンドを最大 100 コマンドまで同時に処理します。

このとき、WORK パート 3 エリアに 100 ブロック必要となります。

WORK パート 4:分散トランザクション処理に関連するデータ

注意:
DDWORKR1 の WORK パート 4 は、Adabas Transaction Manager バージョン 7.5 以降がインストールされている場合はサポートされていません。 代わりに、DDWORKR4 データセットを使用する必要があります。 DDWORKR4 は、WORK パート 4 と同じ目的で使用されるコンテナデータセットですが、クラスタのすべてのメンバと並行して使用できます。 DDWORKR4 データセットは、DDWORKR1 以上のブロックサイズを使用して、通常の方法で割り当てとフォーマットを行う必要があります。 少なくとも、データベースのクラスタの LP パラメータ、またはクラスタと同じ大きさのエクステントが確保される必要があります。

WORK パート 4 は、分散処理に関連する、いくつかのグローバルトランザクションに関する情報を維持します。 例えば、コミット処理のフェーズ 1 中に、グローバルトランザクションのプロテクションデータを WORK パート 1 に格納できなくなった場合、そのデータを WORK パート 1 から WORK パート 4 にコピーできます。

WORK パート 4 のオーバーフローが未解決の場合、ニュークリアスはトランザクションを強制的に終了することができます。 これは、トランザクション ID(XID)およびローカルトランザクションステータス情報以外の WORK パート 4 をクリアします。

WORK パート 4 に必要なサイズは、データベースに対して実行するアプリケーションと、システムの負荷に依存します。 Adabas Transaction Manager バージョン 7.4 以前では、最初はサイズ LP/4 が適切です。 Adabas Transaction Manager 7.5 以降では、最小サイズ 8 ブロックを指定する必要があります。ブロックの最大数は、DDWORK4 データセットのサイズを 8 で割った数です。

WORK パート 4 に維持される情報は、現時点では異なるエリアに移動できないので、セッションとセッションの間にのみ WORK パート 4 のサイズを次のように変更することができます。

ソート

次の公式は、1 つのディスクリプタのすべての値をソートするために使われるソートデータセットスペースの見積り式です。 複数のディスクリプタの場合は、連続的にソートされます。すなわち、最初のディスクリプタのすべての値がソートされ、次に 2 つめのディスクリプタのすべての値がソートされ、以後同様に処理されます。 したがって、最も大きいディスクリプタのソート用のスペースを見積れば、すべてのディスクリプタをソートするのに十分です。

ソートエリアに必要なスペースを見積るには、次の公式を使用します。

DESCSPACE = (AVDESCLEN + (1 + ISNSIZE)) * NUMRECS * AVPEOCCUR * AVMVOCCUR

ここでは次の内容を表しています。

DESCSPACE 必要なディスクリプタスペースの合計をバイト数で示します。
AVDESCLEN 平均圧縮ディスクリプタ長をバイト数で示します。
ISNSIZE 使用される ISN のサイズ(3 または 4)です。
NUMRECS レコード数です。
AVPEOCCUR ディスクリプタがピリオディックブループ内に存在する場合、ピリオディックグループの平均オカレンス数です。 それ以外の場合は、この値を 1 に設定します。
AVMVOCCUR ディスクリプタがマルチプルバリューフィールドである場合、マルチプルバリューフィールドの平均オカレンス数です。 それ以外の場合は、この値を 1 に設定します。

ワークプールサイズ

ワークプールに必要なスペースを見積るには、次の公式を使用します。

LWPAVAIL = LWPSIZE - 1216 - (32 * SORTDEVTRKS) - SORTDEVBSIZ

ここでは次の内容を表しています。

LWPAVAIL ワークプールスペースの使用可能な部分をバイト数で示します。
LWPSIZE ワークプールの合計サイズをバイト数で示します(ユーティリティの LWP パラメータ値)。
SORTDEVTRKS シリンダ当たりのソートデバイストラック数。 デバイスタイプおよびコンポーネント別にブロックサイズのリストを確認するには、該当するシステムプラットフォーム(z/OS、VSE、z/VM、または BS2000)の『Adabas インストールマニュアル』に記載されている「デバイスとファイルについて」を参照してください。
SORTDEVBSIZ ソートデバイスブロックサイズをバイト数で示します。

ソートパーシャルシーケンス

ソートパーシャルシーケンスに必要なスペースを判断するには、次のいずれかの計算式を使用します。 使用する計算式は、DESCSPACE 値(必要なディスクリプタスペースの合計)の計算に使った AVDESCLEN 値(平均ディスクリプタ長)に応じて異なります。

LENGSEQ = (LWPAVAIL * (AVDESCLEN + (1 + ISNSIZE))) / 2

ここでは次の内容を表しています。

LENGSEQ ソートパーシャルシーケンスの長さ。
LWPAVAIL 使用可能なワークプールスペース。
AVDESCLEN 平均圧縮ディスクリプタ長をバイト数で示します。
ISNSIZE 使用される ISN のサイズ(3 または 4)です。
LENGSEQ = (LWPAVAIL * 2) / 3

ここでは次の内容を表しています。

LENGSEQ ソートパーシャルシーケンスの長さ。
LWPAVAIL 使用可能なワークプールスペース。

デバイスサーフェイス

次の公式を使ってデバイスサーフェイス数を計算します。計算結果は、次の整数値に切り上げます。

SURFACES = (DESCSPACE / LENGSEQ) / SORTDEVTRK

ここでは次の内容を表しています。

SURFACES ソートスペースに必要なサーフェイス数。結果は次の整数値に切り上げます。
DESCSPACE 必要なディスクリプタスペースの合計をバイト数で示します。
LENGSEQ ソートパーシャルシーケンスの長さ。
SORTDEVTRKS シリンダ当たりのソートデバイストラック数。 デバイスタイプおよびコンポーネント別にブロックサイズのリストを確認するには、該当するシステムプラットフォーム(z/OS、VSE、z/VM、または BS2000)の『Adabas インストールマニュアル』に記載されている「デバイスとファイルについて」を参照してください。

ソートサイズの見積り

LENGSEQ と SURFACES で計算された中間値を使用して、ソートサイズを次のように計算します。

SORTSIZE = (SURFACES * SORTDEVTRKS * LENGSEQ * 2) / (SORTDEVBSIZ - 4)

ここでは次の内容を表しています。

SORTSIZE ソートエリアの見積りをブロック数で示します。 この値は、次の完全なシリンダに切り上げる必要があります。
SURFACES ソートスペースに必要なサーフェイス数で、以前に計算して切り上げた値。
SORTDEVTRKS シリンダ当たりのソートデバイストラック数。 デバイスタイプおよびコンポーネント別にブロックサイズのリストを確認するには、該当するシステムプラットフォーム(z/OS、VSE、z/VM、または BS2000)の『Adabas インストールマニュアル』に記載されている「デバイスとファイルについて」を参照してください。
LENGSEQ ソートパーシャルシーケンスの長さ。
SORTDEVBSIZ ソートデバイスブロックサイズをバイト数で示します。

ソートディスクリプタ数

上記の計算で得られた SORTSIZE スペースでソートできるディスクリプタ数の見積りを出すには、次の公式を使用します(DESCSPACE の計算時と同じディスクリプタ定義であると仮定します)。

DESCOUNT = SURFACES * SORTDEVTRKS * LENGSEQ / (AVDESCLEN + (1 + ISNSIZE))

ここでは次の内容を表しています。

DESCOUNT 上記の計算で得られた SORTSIZE スペースでソート可能な、以前の DESCSPACE 計算で定義されたディスクリプタ数。
SURFACES ソートスペースに必要なサーフェイス数で、以前に計算して切り上げた値。
SORTDEVTRKS シリンダ当たりのソートデバイストラック数。 デバイスタイプおよびコンポーネント別にブロックサイズのリストを確認するには、該当するシステムプラットフォーム(z/OS、VSE、z/VM、または BS2000)の『Adabas インストールマニュアル』に記載されている「デバイスとファイルについて」を参照してください。
LENGSEQ ソートパーシャルシーケンスの長さ。
AVDESCLEN 平均圧縮ディスクリプタ長をバイト数で示します。
ISNSIZE 使用される ISN のサイズ(3 または 4)です。

Top of page

ステップ 2:データベースの割り当て

  1. オペレーティングシステムの標準の手順で、次の Adabas コンポーネントのデータセットの割り当てを行います。

  2. 競合を最小にし、データベース I/O 動作をハードウェアチャネル間でより均等に分散するために、ASSO、DATA、WORK、PLOG、および RLOG の各データセットは異なる物理ボリューム上に配置することをお勧めします。 ボリュームを 2 つだけ使えるときは、ASSO データセットを 1 つのボリュームに、DATA データセットと WORK データセットをもう 1 つのボリュームに割り当てます。

    PLOG I/O 動作の後には、必ず WORK I/O 動作が伴うので、WORK データセットと PLOG データセットは、異なるボリュームにする必要があります。

    RLOG データセットは、必ず同じタイプの別のデバイスに配置します。

    TEMP と DATA、また SORT と ASSO を分離することでディスクのアクセス時間を大幅に短縮できる可能性があります。 100,000 以上のレコードを含むファイルをロードするときは、SORT を 2 つのボリュームに分割すると、ディスクアームの移動が少なくなります。

  3. ディスクスペースの割り当ては、フォーマットユーティリティ(ADAFRM)のジョブ制御(JCL/JCS または VM CONTROL ミニディスク)に指定します。 詳しい情報と例は『Adabas ユーティリティマニュアル』を参照してください。

(1)2 つのボリュームを使ったデータベースの割り当て例

ボリューム 1 ボリューム 2      
ASSO DATA      
TEMP WORK      
PLOG1 SORT      
PLOG2        

(2)3 つのボリュームを使ったデータベースの割り当て例

ボリューム 1 ボリューム 2 ボリューム 3    
ASSO DATA WORK    
PLOG1 SORT TEMP    
  PLOG2      

(3)大きなファイルをロードする場合のデータベースの割り当て例

ボリューム 1 ボリューム 2 ボリューム 3 ボリューム 4 ボリューム 5
ASSO DATA DATA DATA SORT(後半)
  PLOG1 PLOG2 SORT(前半) WORK
    TEMP    

パフォーマンスの考慮事項

プロテクションログファイルへのハードウェア圧縮(IDRC)の使用は避けるべきです。 なぜなら、ADARES ユーティリティの BACKOUT 機能は、圧縮データを処理するとき、z/OS 下で 2 倍以上の実行時間がかかるからです。 加えて、VSE または z/VM の各システム上の圧縮データへの BACKOUT 機能のサポートはないからです。

Top of page

ステップ 3:データベースのフォーマッティング

最初のファイルがデータベースにロードされる前に、ADAFRM ユーティリティを使用して ASSO、DATA、および WORK の各データセットをフォーマットします。 ADAFRM ユーティリティについては、『Adabas ユーティリティマニュアル』を参照してください。

TEMP および SORT は、これらを必要とする Adabas ユーティリティを実行する前にフォーマットする必要があります。 一時データセットを割り当ててフォーマットし、ユーティリティの実行後に削除するか、または繰り返し使用できるように、恒久データセットを割り当てることができます。

注意:
Adabas Recovery Aid(RLOG を含む)を使用する場合は、一時データセットをすべてカタログする必要があります。 Adabas Recovery Aid を実行している場合、原則として、アソシエータデータセットが必要なジョブで一時データセットをカタログします。

ロギングを行う最初のセッションを開始する前に CLOG、PLOG、RLOG の各データセットをフォーマットします。

Top of page

ステップ 4:データベースパラメータの定義

すべてのデータベースコンポーネントを物理的に割り当ててフォーマットした後、ADADEF ユーティリティを使ってデータベース ID、最大ファイル数、システムファイル割り当てなどのデータベースパラメータを定義します。

ASSO、DATA、および WORK の各データセットのサイズは、ADADEF DEFINE パラメータで定義します。 スペースの割り当ては、Adabas へのサイズ定義とは異なることに注意する必要があります。データセットは、Adabas に定義する前に割り当ててフォーマットする必要があります。 その他のデータセットのサイズは、次のように Adabas に定義します。

注意:
各ログデータセット(CLOG、PLOG、または RLOG)は、16,777,215(x'FFFFFF')ブロック/RABN に制限されます。

Top of page