最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

ベールを脱いだアクセスパスの神秘IBMマニュアル編

[ HOME ] [ Upper ] [ Next ]


DB2/400データベースプログラミング1.3.2.2 既存アクセス・パスの使用

2つ以上のファイルが同一の物理ファイルを基礎としており、同一のキー・フィールドが同じ順序に並んでいる場合には、同じキー順アクセス・パスを自動的に共用します。アクセス・パスが共用されると、アクセス・パスを保守するのに必要なシステムの活動量、およびファイルが使用する補助記憶域の量が削減されます。

キー順アクセス・パスを持つ論理ファイルを作成する場合、システムは常に既存のアクセス・パスを共用しようとします。アクセス・パスを共用するためには、アクセス・パスは以下の条件を満足するシステム上になければなりません。

追加する論理ファイル・メンバーは、既存のアクセス・パスの基礎である同じ物理ファイルのメンバーを基礎としていなければなりません。各々のキー・フィールドに指定する長さ、データ・タイプ、小数部の桁は、新しいファイルと既存のファイルの両方で同じものでなければなりません。

FIFO、LIFO、または FCFO キーワードを指定していない場合、新しいファイルのキー・フィールドの数は既存のアクセス・パスより少なくてもかまいません。つまり、キーの先頭部分が同一ならば、新しい論理ファイルは既存のアクセス・パスを共用することができます。ただし、ファイルが既存のアクセス・パスの一部分のキーを共用するときは、共用されるアクセス・パスのキーの一部分のフィールドが更新されると、そのアクセス・パス内でのレコード位置が変わることもあります。そのような状況の説明については、トピック 1.3.2.2.1の『暗黙共用アクセス・パスの例』を参照してください。アクセス・パスの属性(例:UNIQUE、LIFO、FIFO、FCFO など)およびキー・フィールドの属性(例:DESCEND、ABSVAL、UNSIGNED、SIGNED など)は同一でなければなりません。

さらに、

アクセス・パスの所有者は、アクセス・パスを最初に作成した論理ファイル・メンバーです。共用アクセス・パスの場合、アクセス・パスを所有する論理メンバーが削除されたときに、アクセス・パスを共用する最初のメンバーが新しい所有者となります。
つまり、「アクセスパス」と「論理ファイル」は各々独立していることが当然の前提、アクセスパスの所有者が論理ファイルなのだ、と言っています。そして、共用されていると、(当然論理ファイルは2つ以上あるので)、論理ファイル一つが削除されると、アクセスパスは別の論理ファイルに譲られる(アクセスパスは消えない)と言っています。逆に言えば、共用されていなければ、論理ファイルとともにアクセスパスも消えることになります。(よく見ると所有者って表現が分かりにくいのだ。)
そして、自分の体験した問題は以下のように説明されていました。

1.3.2.2.1 暗黙共用アクセス・パスの例

この例は、暗黙アクセス・パスの共用について十分に理解するために役立ちます。

2つの論理ファイル LFILE1 と LFILE2 が物理ファイル PFILE を基礎にして作成されています。LFILE1 が最初に作成され、これは2つのキー・フィールド KFD1と KFD2 を持ちます。LFILE2 には3つのキー・フィールド KFD1、KFD2、およびKFD3 があります。2つの論理ファイルは、2つの同一キー・フィールドを使用しますが、2つのキー・フィールドを持つファイルの後に、3つのキー・フィールドを持つ論理ファイルが作成されたため、アクセス・パスは共用しません。

図 3-4. 保管と復元の前の物理ファイルと論理ファイル

  物理ファイル (PFILE) 論理ファイル 1 (LFILE1) 論理ファイル 2(LFILE2)
アクセスパス   KFD1、KFD2 KFD1、KFD2、KFD3
フィールド KFD1、KFD2、KFD3、A、B、C、D、E、F、G KFD1、KFD2、 KFD3、F、C、A KFD1、KFD2、KFD3、D、G、F、E

適用業務は LFILE1 を使用して、レコードにアクセスし、KFD3 フィールドをブランク(Cが入っている場合)または C(ブランクの場合)に変更します。この適用業務では、アクセス・パスが共用されないので、ユーザーの予期しない結果は生じません。しかし、物理ファイルと両方の論理ファイルの保管と復元の後は、プログラムが何もしていないように見え、処理に時間がかかります。復元に何も変更を加えない限り、AS/400 システムは、次のように作動します。

  • 最大数のキーを持つ論理ファイルを最初に復元します。
  • 不必要なアクセス・パスは作成しません。

これらの条件の変更に関する情報は、トピック3.4.3.2.2の『アクセス・パスの再作成時の制御』を参照してください。

3つのキー・フィールドを持つので、LFILE2 が最初に復元されます。回復の後、LFILE1 は LFILE2 のアクセス・パスを暗黙に共用します。暗黙の共用アクセス・パスについて理解していないユーザーは、回復後に LFILE1 を使用するとき、実際には LFILE2 のキーを使用していることに気づきません。

図 3-5. 保管と復元の後の物理ファイルと論理ファイル.

保管と復元の前との違いは、論理ファイルが同一のアクセス・パスを共用するようになったことだけであることに注意してください。

  物理ファイル (PFILE) 論理ファイル 1 (LFILE1) 論理ファイル 2(LFILE2)
アクセスパス   KFD1、KFD2、KFD3 KFD1、KFD2、KFD3
フィールド KFD1、KFD2、KFD3、A、B、C、D、E、F、G KFD1、KFD2、KFD3、F、C、A KFD1、KFD2、KFD3、D、G、F、E

テストされ変更されるレコードには、次のものがあります。

相対レコード KFD1 KFD2 KFD3
001 01 01 *BLANK
002 01 01 *BLANK
003 01 01 *BLANK
004 01 01 *BLANK

最初のレコードは 0101*BLANK の最初のキーによって読み取られ、0101C に変更されます。レコードは次のようになります。

相対レコード KFD1 KFD2 KFD3
001 01 01 C
002 01 01 *BLANK
003 01 01 *BLANK
004 01 01 *BLANK

適用業務が '次を入手' キーを発行するときに、0101*BLANK より上にある次の高位キーは 0101C です。これは変更されたばかりのレコードです。しかし、今回は適用業務は KFD3 フィールドを C からブランクへ変更します。

ユーザーは暗黙アクセス・パス共用を理解していないので、適用業務はすべてのレコードを2度アクセスして変更します。その結果、適用業務が実行に時間がかかり、レコードが変更されなかったように見えます。

マニュアル、丸ごとのせましたが、おい、どーして、SAVRSTなんて分かりづらい例を出すんだ。内容も特殊すぎるぞ!後から、キーの少ない論理ファイルを作成しても「暗黙の共用アクセス・パスについて理解していないユーザー」はいるんだぞ!


[ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送