Interstage Data Effector ユーザーズガイド |
目次
索引
![]() ![]() |
付録E メモリ見積り式 |
ソート機能のメモリ見積り式について、説明します。
32ビット用Data Effectorの場合
15 × 1,024 × 1,024 + min(( S ×( α × 2 × N × [(( 1 + A ) - logN)] × 70 )) + N × (( M × B + 12 + 24 + M + 1) + ( S × ( 1 + A ))) , P × 1,024 × 1,024 ) + 2 × L
64ビット用Data Effectorの場合
15 × 1,024 × 1,024 + min(( S ×( α × 2 × N × [(( 1 + A ) - logN)] × 144 )) + N × (( M × B + 24 + 40 + M + 1) + ( S × ( 1 + A ))) , P × 1,024 × 1,024 ) + 2 × L
[(( 1 + A ) - logN)]の計算結果が1以下の場合は、1としてください。
変数
意味
単位
N
総レコード件数
件数
S
ソート式に指定したソート項目の数
個
A
ソート式に指定したソート項目の平均サイズ (注1)
バイト
M
リターン式に指定した関数および項目名/テキスト式の数 (注2)
個
B
リターン式に指定した出力項目の平均サイズ (注3)
バイト
P
ソート機能で利用するメモリサイズ (注4)
メガバイト
L
1レコードの最大長
バイト
α
ソートキー係数 (注5)
0 < α < 1
ソート式に指定したデータ長を指定します。
- val(項目名/テキスト式)の場合:16
- rlen(項目名/テキスト式, 文字数)の場合:文字数分のバイト長(平均)
- 項目名/テキスト式の場合:項目名/テキスト式が示すデータのバイト長(平均)
20を超える場合は20を指定します。リターン式を省略した場合は、全項目数に1を設定してください。
リターン式を指定した場合は、リターン式に指定した集合関数(count、sum、max、min、avg)、val、rlenおよび項目名/テキスト式の数を指定します。ただし重複するものは数に含めないでください。例:リターン式がval($A), rlen($B,10), rlen($C,20), $C の場合val ($A)とrlen($B)とrlen($C)で3となります。リターン式を省略した場合は、データの平均サイズを指定してください。
リターン式を指定した場合は、リターン式に指定したval、rlen、項目名/テキスト式のデータ長の合計を指定します。
1つずつのデータ長は以下のように求めます。
- val(項目名/テキスト式)、項目名/テキスト式の場合:項目名/テキスト式が示すデータのバイト長(平均)
- rlen(項目名/テキスト式, 文字数)の場合:文字数分のバイト長(平均)
- コマンドの場合
ソート条件ファイルの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など)
ソート機能のメモリ見積り例を以下に示します。
変動要因が以下の条件の場合
変数
意味
数値例
N
総レコード件数
100,000件数
S
ソート式に指定したソート項目の数
4個
A
ソート式に指定したソート項目の平均サイズ
8バイト
M
リターン式に指定した関数および項目名/テキスト式の数
8個
B
リターン式に指定した出力項目の平均サイズ
512バイト
P
ソート機能で利用するメモリサイズ
1,000メガバイト
L
1レコードの最大長
2,048バイト
α
ソートキー係数
0.6
32ビット用Data Effectorの場合
15 × 1,024 × 1,024 + min(( 4 ×( 0.6 × 2 × 100,000 × [(( 1 + 8 ) - log(100,000))] × 70 )) + 100,000 × (( 8 × 512 + 12 + 24 + 8 + 1) + ( 4 × ( 1 + 8 ))) , 1,000 × 1,024 × 1,024 ) + 2 × 2,048 = 567,832,736 (約542メガバイト)
64ビット用Data Effectorの場合
15 × 1,024 × 1,024 + min(( 4 ×( 0.6 × 2 × 100,000 × [(( 1 + 8 ) - log(100,000))] × 144 )) + 100,000 × (( 8 × 512 + 24 + 40 + 8 + 1) + ( 4 × ( 1 + 8 ))) , 1,000 × 1,024 × 1,024 ) + 2 × 2,048 = 712,712,736 (約680メガバイト)
ソート式に指定された項目の内容(ばらつき度合い)により、実際のメモリ使用量が見積り結果より大きくなる場合があります。
そのため、必ず実機で測定し、確認してください。
目次
索引
![]() ![]() |