Interstage Data Effector ユーザーズガイド |
目次
索引
![]() ![]() |
付録E メモリ見積り式 |
集計機能のメモリ見積り式について、説明します。
32ビット用Data Effectorの場合
15 × 1,024 × 1,024 + ( G × ( α × 2 × N × [(A - logN)] × 72 ) + N × ( 40 + M × 28 + 36 + ( G × ( 24 + A ) ) + B ) ) / D + 2 × L
64ビット用Data Effectorの場合
15 × 1,024 × 1,024 + ( G × ( α × 2 × N × [(A - logN)] × 144 ) + N × ( 44 + M × 28 + 52 + ( G × ( 36 + A ) ) + B ) ) / D + 2 × L
[(A - logN)]の計算結果が1以下の場合は、1としてください。
変数
意味
単位
N
集計結果見積りレコード数(グループ数)
件数
G
グループ式に指定したグループ項目の数
個
A
グループ式に指定したグループ項目の平均サイズ (注1)
バイト
M
集計式に指定した関数および項目名/テキスト式の数 (注2)
個
B
集計式に指定したval、rlen、項目名/テキスト式のデータ長の合計 (注3)
バイト
D
一時ファイルの使用 (注4)
-
L
1レコードの最大長
バイト
α
グループキーの係数 (注5)
0 < α < 1
グループ式に指定したデータ長を指定します。
- val(項目名/テキスト式)の場合:16
- rlen(項目名/テキスト式, 文字数)の場合:文字数分のバイト長(平均)
- 項目名/テキスト式の場合:項目名/テキスト式が示すデータのバイト長(平均)
20を超える場合は20を指定します。集計式に指定した集合関数(count、sum、max、min、avg)、val、rlenおよび項目名/テキスト式の数を指定します。ただし重複するものは数に含めないでください。例:集計式がsum($A)+20, sum($A)+sum($B) の場合、sum($A)とsum($B)で2となります。
例:集計式がval($C), rlen($D,10), rlen($D,20), $E の場合、val($C)とrlen($D)と$Eで3となります。集計式に指定したval、rlen、項目名/テキスト式のデータ長の合計を指定します。
1つずつのデータ長は以下のように求めます。
- val(項目名/テキスト式)、項目名/テキスト式の場合:項目名/テキスト式が示すデータのバイト長(平均)
- rlen(項目名/テキスト式, 文字数)の場合:文字数分のバイト長(平均)
- コマンドの場合
集計コマンド(shunanalyze)の動作環境ファイルにWorkFolderパラメタを指定した場合は、10を指定してください。
WorkFolderパラメタを指定しない場合は、1を指定してください。- C APIの場合
AsisSetWorkFolderAnalyze関数を呼び出して、集計時に一時ファイルを使用する場合は、10を指定してください。
一時ファイルを使用しない場合は、1を指定してください。グループ式に指定した項目のデータの内容に依存します。
- キーの後半に値の変化が多い場合:0.4
例:(000001、000002、000012、000125など)
- キーの前半に値の変化が多い場合:0.6
例:(100-001、210-001、321-001など)
- キーの全体に値の変化が多い場合:0.8
例:(123456、234512、912384など)
集計機能のメモリ見積り例を以下に示します。
変動要因が以下の条件の場合
変数
意味
数値例
N
集計結果見積りレコード数(グループ数)
100,000件数
G
グループ式に指定したグループ項目の数
4個
A
グループ式に指定したグループ項目の平均サイズ
8バイト
M
集計式に指定した関数および項目名/テキスト式の数
8個
B
集計式に指定したval、rlen、項目名/テキスト式のデータ長の合計
160バイト
D
一時ファイルの使用
1
L
1レコードの最大長
2,048バイト
α
グループキーの係数
0.6
32ビット用Data Effectorの場合
15 × 1,024 × 1,024 + ( 4 × ( 0.6 × 2 × 100,000 × [(8 - log(100,000))] × 72 ) + 100,000 × ( 40 + 8 × 28 + 36 + ( 4 × ( 24 + 8 )) + 160 )) / 1 + 2 × 2,048 = 178,212,736 バイト (約170メガバイト)
64ビット用Data Effectorの場合
15 × 1,024 × 1,024 + ( 4 × ( 0.6 × 2 × 100,000 × [(8 - log(100,000))] × 144 ) + 100,000 × ( 44 + 8 × 28 + 52 + ( 4 × ( 36 + 8 )) + 160 )) / 1 + 2 × 2,048 = 288,692,736 バイト (約275メガバイト)
グループ式に指定された項目の内容(ばらつき度合い)により、実際のメモリ使用量が見積り結果より大きくなる場合があります。
そのため、必ず実機で測定し、確認してください。
目次
索引
![]() ![]() |