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

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

よく使うマニュアルです

Wiki

updated on 2004.06.23

3.4.アクセスパスの神秘

[ Previous ] [ HOME ] [ Upper ] [ Next ]


実は、何年か前、不思議なことがあったんです。重複キーのキーに無い部分の並び方はFIFOですよねこの部分は誤りですb_debug.gif (341 バイト)。ところが、そのキーに無い部分を書き換えたら、まるで、キー付きの部分を書き換えたように、同じレコードがずっと読み込まれて、ループしたんです。

例えば、順序番号をキーにするファイルの、そのキーとなる順序番号を振り直した場合です。よくあるのが、いくらreadしても、書き換えてアクセスパス保守されて、再びそのレコードを読まれるパターンですね。これでループしたのならば、話は分かります。でも、そのファイルは、DDSをみても、DSPFDで*ACCPTHをしらべても、その順序番号はキーになってないんです。デバッグすると、まるでそれがキーかの様に動いています。何じゃコリャ?

「三度自分を疑ってから、OSを疑え」といいますが(うそ)、プログラムではなく、今度はOSを調べてみようと考え出しました。 暗黙のアクセスパス

ここで、ふと、「共用アクセスパス」を思い出しました。
プログラムが参照しているファイルとおんなじキー付きの、別のファイルがあって、そのアクセスパスには確かに順序番号が入っています。プログラムでは、それをキーにしていない方を参照していました。
そこで、さらに調べると、DSPFDの*MBR情報に暗黙のアクセスパスがあるとでていて、よく見ると、別個のファイルのアクセスパスを参照していました。自分が参照しようとしている論理ファイルの再作成は、件数が多いのに「あっ」という間にできます。間違いなく共用されています。

「じゃ、その共用されているファイルを削除しちゃえ。」

その日は休日だったんです。誰も使っていなかったので削除できます。「これで解決」.と思ったんですが...
実は、その後も同じことが、続いたのです。 ??????

役立たずのマニュアル...予期せぬ現象?

ここから先はマニュアルにも載っていないし、英語の本もひっくり返したのですが、出ていません。帰納的類推です。

どうやら、アクセスパスはOS内部では、ファイルから独立したシステムオブジェクトのようです。ファイルに関連するのですが、そのアクセスパスを参照するファイルがなくなるまでは、アクセスパスは存続するようです。
つまり、Aというファイルで出来たアクセスパスがあって、後からBというファイルが「暗黙の共用」をすると、Aが削除されても、Bのために、Aのアクセスパスは残るのです。AとB両方を削除して、初めて、そのアクセスパスも消えて、再度Aファイルの無い状態で、Bを作成すると純粋にBファイルのアクセスパスができるらしいのです。(共用アクセスパスそのもののアイデアはとてもいいものですよ。その点、誤解の無いように。)

先ほどのループは、どうなったかというと...

アクセスパスの元になるファイルを削除してから、件のファイルを作成したら、今度は索引作成に時間がかかっていたので、手応えを感じました。そして、先ほどの謎のループはなくなりました。この間、プログラムの変更は一切していませんでした。

確かに、同じキー構成でファイルを作ることは、資源の無駄です。上記の場合、データベースの移行という通常とは別の作業だったんです。移行用に新規のファイルを作ったら、こうなってしまったんですよ。やれやれ。


[ Previous ] [ HOME ] [ Upper ] [ Next ]

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

 

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