DFSDHDS0

ロード モジュールDFSDHDS0には、IMSデータベース スペース管理の実行に必要なプログラムが含まれています。このモジュールのソースは、DBSOURCEメンバーのDFSDHD00とDFSRRHM0にあります。このプロセスは、DL/Iデータベース内の空きスペースと割り振り済みスペースを管理します。

DL/Iスペース マネージャーが呼び出されるのは、IMSによる挿入、置換、削除の各呼び出しによってDL/Iデータベース内のスペースの使用状況が変更される場合です。また、データベースのバックアウトやIMSの緊急再始動の結果、スペースが変更された場合にも、DFSDHDS0は呼び出されます。

モジュールDFSDHD00内のCSECT DFSDHDS0は、DL/Iスペース マネージャーの入り口点です。このモジュールはスペース要求を分析して、以下の処理ルーチンのいずれかを呼び出します。

·   DFSGGSPC-スペースの取得

·   DFSFRSPC-スペースの解放

·   DFSRCHBK-バックアウト中のスペースの取得

必要に応じて、このモジュールは物理データベース ブロックを検索します。また、ルーチンを呼び出す前に、物理データベースを定義するデータ管理ブロック(DMB)のフィールドを評価します。

ヒント

DL/Iスペース マネージャーがシステム的に処理する作業量は、適切なデータベース設計手法を採用することによって削減できます。

揮発性のデータベースには、適切な空きスペースを割り当てます。

DL/Iスペース マネージャーは複数のステップからなるアルゴリズムを使用して、空きスペースを検索します。この詳細については、モジュールDFSGGSPCの説明に記載されています。処理のいくつかのポイントで、バッファー プール全体を対象に、適切な空きスペースを持つブロックが検索されます。大量の順次挿入を実行するジョブでは、小さいバッファー プールを扱う方が効率的です。ジョブ内で他のデータベース用に大きいバッファー プールが必要な場合、挿入対象のデータベース専用のバッファーを用意して、バッファーを必要な数だけ割り振ります。

可変長セグメントの使用方法が非効率な場合、DL/Iスペース マネージャーが不必要な処理を実行する原因になります。再配置した可変長セグメントが取得したときよりも1バイトでも大きい場合、スペース管理機能が呼び出されます。セグメントが存在した場所に空きスペースが存在する場合、セグメントは元の位置に戻ることができますが、セグメントの直前に残された空きスペースは調整する必要があります。

元の位置にセグメントを配置する十分なスペースが存在しない場合、接頭部が元の位置に残され、元のデータ部分は空きスペースになります。また、新しいデータ部分は別の場所に挿入する必要があり、スペース管理が必要になります。この時点でセグメントが検索されると、IMSは2個所を調べる必要があるため、余分な入出力が発生します。可変長セグメントに最小の長さを設定して、小さいセグメントをこの長さに埋め込むと、余分なスペースが多少は必要になりますが、パフォーマンスは大きく改善されます。

最終的に、スペース管理ルーチンのCPU使用量が過剰な場合は、データベースの再編成が必要であることを示しています。

参考資料

モジュールDFSDHD00とDFSRRHM0の詳細については、IMSのDBSOURCEライブラリー データセットを参照してください。IMSシステム プログラマーにお問い合わせください。