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