トラブルシューティング

本付録では、ProSortを実行時に発生する可能性のある問題について記述し、その解決方法を紹介します。

1. メモリの使用

ソート処理をするときメモリの使用量を設定すると、入力ファイルのサイズと指定されたメモリの使用量を比較した結果によってソート方式が変わります。

ソート方式は以下のように2つに区分されます。

  • 内部ソート (1-pass sort)

    入力ファイルをすべてメモリに読み込んでソートする方式です。指定されたメモリの使用量が入力ファイルより大きい場合、この方式でソートします。

  • 外部ソート (2-pass sort)

    ソート処理の中間結果を一時ファイルに保存する方式です。指定されたメモリの使用量より入力ファイルが大きい場合、この方式でソートします。

メモリの使用量はスクリプトや$PROSORT_SID.tipファイルで設定できます。両方共設定されていると、スクリプトに設定された値が優先します。

設定された値は実際の物理的なメモリの使用量を意味せず、ソート方式を選択するときのみ使用されます。実際のメモリの使用量はレコードの保存領域以外にもソート・キーの保存領域などが追加されます。

ただし、以下の例のように設定された場合には、実際の物理的なメモリの使用量が指定されたメモリの使用量を超えることができません。

USE_STRICT_MEMORY=Y

1.1. メモリ使用量の指定

  • 問題

    外部ソートを使用するとき、処理速度が低下する問題が発生します。

  • 解決方法

    設定されたメモリの使用量(以下、M)が入力ファイルの50%以下の場合は外部ソートを使用するため、Mを増加させても処理速度は向上しません。しかし、Mが入力ファイルの80%以上の場合は、Mが増加するほど処理速度が向上します。

    外部ソートを使用する場合には64MB ~ 256MBのメモリを設定することを推奨します。

1.2. 利用可能なシステム・メモリ

  • 問題

    システムの物理的な可用メモリの余裕量よりメモリの使用量を大きく設定した場合は問題が発生します。利用可能なシステム・メモリが不足するとオペレーティング・システムは仮想メモリのスワップイン、スワップアウト (swap-in、swap-out)過程でディスクを使用することになります。これによってスラッシング(thrashing)が発生します。

  • 解決方法

    システムの物理的な可用メモリの余裕量よりメモリの使用量を大きく設定してはなりません。

1.3. 同時作業の数

  • 問題

    外部ソートを使用するとき、同時作業が実行される数が物理的なディスク数を超えると問題が発生します。

  • 解決方法

    同時に実行される作業数は物理的なディスク数を超えないようにします。同時に実行される作業数はディスクの入出力の割合に合わせて適切に選択します。

1.4. 作業に割り当てられたメモリ使用量

  • 問題

    各作業に割り当てられたメモリ使用量の合計がシステムの物理的な可用メモリの余裕量を超えると問題が発生します。

  • 解決方法

    システムの物理的な可用メモリを確認した後、スクリプト・ファイルや$PROSORT_SID.tipファイルでメモリの使用量を設定したパラメータをすべて探して以下のように修正します。

    (システムの物理的な可用メモリ) / (作業数) より小さい値

1.5. 必要なディスク空間

  • 問題

    ディスク空間が不足し、結果ファイルや一時ファイルをディスクに記録できないと、問題が発生します。

  • 解決方法

    外部ソートを使用するとき、ソート処理の中間結果が一時ファイルに保存されます。このとき、一時ファイルのサイズは入力ファイルのサイズと同じです。そのため、入力ファイルのサイズより2倍以上の余裕空間がディスクに存在する必要があります。