見積り式
32ビット用Data Effectorの場合(コマンド、C API共通)
15 × 1,024 × 1,024
+ 2 × 1,024 × 1,024 × P
+ min(((α × 2 × N × max((S ×(1 + A) - logN) , 1) × 72))
+ N × ((M × B + 16 + 24 + M + 1) + (S × (1 + A))) , MM × 1,024 × 1,024)
+ 2 × L
+ (V × 100 + VC) × 1,024 |
64ビット用Data Effectorの場合(コマンド、C API共通)
15 × 1,024 × 1,024 + 2 × 1,024 × 1,024 × P + min(((α × 2 × N × max((S × (1 + A) - logN), 1) × 144)) + N × ((M × B + 32 + 40 + M + 1) + (S × (1 + A ))) , MM × 1,024 × 1,024) + 2 × L + (V × 100 + VC × 2) × 1,024 |
記号の説明
変数 | 意味 | 単位 |
---|---|---|
N | 総レコード件数 | 件数 |
S | ソート式に指定したソート項目の数 | 個 |
A | ソート式に指定したソート項目の平均サイズ (注1) | バイト |
M | リターン式に指定した関数および項目名/テキスト式/仮想項目の数 (注2) | 個 |
B | リターン式に指定した出力項目の平均サイズ (注3) | バイト |
MM | ソート機能で利用するメモリサイズ (注4) | メガバイト |
L | 1レコードの最大長 | バイト |
α | ソートキー係数 (注5) | 0 < α < 1 |
P | 並列数 (注6) | 個 |
V | 仮想項目定義数 | 個 |
VC | 仮想項目の関係式に指定するリテラルの文字数(注7)の合計 | - |
ソート式に指定したデータ長を指定します。
val関数、数値関数、および数値型の仮想項目の場合: 16
substr関数の場合: substr関数の文字列長に指定した文字数分のバイト長(平均)
項目名、テキスト式、文字列型の仮想項目、およびrtrim関数の場合: 項目名、テキスト式、文字列型の仮想項目、およびrtrim関数の引数に指定した項目が示すデータのバイト長(平均)
20を超える場合は20を指定します。
日付値関数、および日付型の仮想項目の場合: 6
時刻関数、および時刻型の仮想項目の場合: 3
日時値関数、および日時型の仮想項目の場合: 9
リターン式を省略した場合は、全項目数に1を設定してください。
リターン式を指定した場合は、リターン式に指定した集合関数(count、sum、max、min、avg)、val関数、substr関数および項目名/テキスト式/仮想項目の数を指定します。ただし重複するものは数に含めないでください。
例:リターン式がval($A), substr($B,10), substr($C,20), $C の場合val ($A)とsubstr($B)とsubstr($C)で3となります。
リターン式を省略した場合は、データの平均サイズを指定してください。
リターン式を指定した場合は、リターン式に指定した関数、項目名/テキスト式/仮想項目のデータ長の合計を指定します。
項目名/テキスト式のデータ長: 項目名/テキスト式が示すデータの文字数分のバイト長
文字列型の仮想項目のデータ長: 仮想項目が示すデータの文字数分のバイト長
数値型の仮想項目のデータ長: 16
日付型の仮想項目のデータ長: 6
時刻型の仮想項目のデータ長: 3
日時型の仮想項目のデータ長: 9
関数のデータ長は、関数の引数に指定した項目名/テキスト式/仮想項目のデータ長を上記に従って求めます。
コマンドの場合
ソート条件ファイルのMemorySizeパラメタに指定された値を指定してください。MemorySizeパラメタを省略した場合には、1000を指定してください。
C APIの場合
AsisSetEnvSort関数の呼出し時に指定したMemorySizeパラメタを指定してください。MemorySizeパラメタに0を指定した場合には、1000を指定してください。
見積り式には、メガバイト値を指定してください。バイトに換算する必要はありません。
ただし、32ビット用Data Effectorを使用する場合、指定可能サイズに制限があります。詳細は、“B.4.2 ソート条件ファイル”を参照ください。
ソート式に指定した項目のデータの内容に依存します。
キーの後半に値の変化が多い場合:0.4
例:(000001、000002、000012、000125など)
キーの前半に値の変化が多い場合:0.6
例:(100-001、210-001、321-001など)
キーの全体に値の変化が多い場合:0.8
例:(123456、234512、912384など)
C APIの場合は、1を指定します。
コマンドの場合は、sort用動作環境ファイルのInFileパラメタおよび、ParallelNumパラメタの指定によって決定します。詳細は“B.4.1 sort用動作環境ファイル”のParallelNumパラメタを参照してください。
リテラルのバイト数は、以下のように計算します。
文字列リテラルの場合のデータ長:指定したリテラルのバイト数
数値リテラルの場合のデータ長:16
日付リテラルの場合のデータ長:6
時刻リテラルの場合のデータ長:3
日時リテラルの場合のデータ長:9
EMPTYの場合のデータ長:0
見積り例
ソート機能のメモリ見積り例を以下に示します。
変動要因が以下の条件の場合
変数 | 意味 | 数値例 |
---|---|---|
N | 総レコード件数 | 100,000件数 |
S | ソート式に指定したソート項目の数 | 4個 |
A | ソート式に指定したソート項目の平均サイズ | 8バイト |
M | リターン式に指定した関数および項目名/テキスト式の数 | 8個 |
B | リターン式に指定した出力項目の平均サイズ | 512バイト |
MM | ソート機能で利用するメモリサイズ | 1,000メガバイト |
L | 1レコードの最大長 | 2,048バイト |
α | ソートキー係数 | 0.6 |
P | 並列数 | 1 |
V | 仮想項目定義数 | 1個 |
VC | 仮想項目の関係式に指定するリテラルの文字数の合計 | 16 |
32ビット用Data Effectorの場合
15 × 1,024 × 1,024 + 2 × 1,024 × 1,024 × 1 + min(((0.6 × 2 × 100,000 × max((4 × (1 + 8) - log(100,000)) , 1) × 72)) + 100,000 × ((8 × 512 + 16 + 24 + 8 + 1) + (4 × (1 + 8))) , 1,000 × 1,024 × 1,024) + 2 × 2,048 + (1 × 100 + 16) × 1,024 = 703,888,672(約671メガバイト) |
64ビット用Data Effectorの場合
15 × 1,024 × 1,024 + 2 × 1,024 × 1,024 × 1 + min(((0.6 × 2 × 100,000 × max((4 × (1 + 8) - log(100,000)) , 1) × 144)) + 100,000 × ((8 × 512 + 32 + 40 + 8 + 1) + (4 × (1 + 8))) , 1,000 × 1,024 × 1,024) + 2 × 2,048 + (1 × 100 + 16 × 2) × 1,024 = 974,945,056(約930メガバイト) |
注意
ソート式に指定された項目の内容(ばらつき度合い)により、実際のメモリ使用量が見積り結果より大きくなる場合があります。
そのため、必ず実機で測定し、確認してください。