6.3.25 外部データアクセス用ライブラリ使用時のメモリ所要量の求め方
外部表を使用するか,またはCOPY文を実行する場合,HADBサーバが使用するメモリの最大サイズとは別に,外部データアクセス用ライブラリが使用するメモリ(プロセスメモリ)の最大サイズが必要です。
外部データアクセス用ライブラリが使用するメモリの最大サイズは,次に示す計算式から求めてください。
計算式(単位:キロバイト)
外部データアクセス用ライブラリが使用するメモリの最大サイズ
=ARROW_INIT_SIZE+(ARROW_SELECT_SIZE※1+ARROW_COPY_SIZE※2)
×MIN(rthd_num ,max_users×sql_rthd_num)
- 注※1
-
外部表を指定したSQL文を実行する場合に加算してください。
- 注※2
-
COPY文を実行する場合に加算してください。
変数の説明
- ARROW_INIT_SIZE
-
次に示す計算式から求めてください。
計算式
ARROW_INIT_SIZE=(cpu_core_num×978+9,672)×1,024
- cpu_core_num
-
サーバマシンのCPUのコア数
- ARROW_SELECT_SIZE
-
次に示す計算式から求めてください。
計算式
ARROW_SELECT_SIZE={(4.60×MIN(fgntbl_num , uthd_num)) ×object_data_size }÷1,024
- fgntbl_num
-
1SQL文に指定する外部表の数の最大値
- uthd_num
-
サーバ定義のadb_sys_uthd_numオペランドの指定値
- object_data_size
-
外部表に読み込まれる外部データファイルのうちの最大ファイルサイズ(単位:バイト)
1SQL文に複数の外部表を指定する場合,全外部表の外部データファイルの中で最も大きいファイルサイズを代入してください。ファイルサイズの最大値がわからない場合は,1,073,741,824(1ギガバイト)を代入してください。
- ARROW_COPY_SIZE
-
COPY文実行時最大メモリサイズ
次に示す計算式から求めてください。
計算式(単位:キロバイト)
ARROW_COPY_SIZE=MAX_ARROW_COPY_SQL_SIZE÷1,024
- MAX_ARROW_COPY_SQL_SIZE
-
実行するCOPY文ごとにARROW_COPY_SQL_SIZEを計算してください。その中で最大値を代入してください。
- ARROW_COPY_SQL_SIZE
-
COPY文実行時メモリサイズ
次に示す計算式から求めてください。
計算式(単位:バイト)
ARROW_COPY_SQL_SIZE=3,225,419,776+4×row_size
- row_size
-
COPY文によって出力される1行のデータサイズの最大値
1行のデータサイズは,各列のデータサイズの合計値です。各列のデータサイズは,次に示す表から求めてください。
表6‒20 COPY文で出力される各列のデータサイズ 項番
分類
列のデータ型
列のデータサイズ(単位:バイト)
1
数データ
BIGINT
9
2
INTEGER※1
5
3
SMALLINT※2
3
4
DECIMAL
17
5
NUMERIC
6
DOUBLE PRECISION
9
7
FLOAT
8
REAL
9
文字データ
CHAR
定義長+5
10
VARCHAR
実長+5
11
STRING
12
日時データ
DATE
5
13
TIME(p)
pが0,または3の場合
5
14
pが6,または9の場合
9
15
TIMESTAMP(p)
9
16
バイナリデータ
BINARY
定義長+5
17
VARBINARY
実長+5
18
配列データ
ARRAY
各配列要素のデータサイズの合計+5
19
構造データ
STRUCT
各フィールドのデータサイズの合計+1
20
論理データ
BOOLEAN
2
21
UUIDデータ
UUID
17
- (凡例)
-
p:小数秒の桁数(0,3,6,または9)
- 注
-
値がナル値の場合は,データサイズの値を1として計算してください。
- 注※1
-
整数データ型のデータ形式がレガシー形式の場合は,列のデータサイズの値を9バイトとして計算してください。
- 注※2
-
整数データ型のデータ形式がレガシー形式の場合は,列のデータサイズの値を5バイトとして計算してください。
- rthd_num
-
サーバ定義のadb_sys_rthd_numオペランドの指定値
- max_users
-
SQL文を実行するコネクションの同時実行数
コネクションの同時実行数がわからない場合は,サーバ定義のadb_sys_max_usersオペランドの指定値を代入してください。
- sql_rthd_num
-
最大SQL処理リアルスレッド数(サーバ定義のadb_sql_exe_max_rthd_numオペランドの指定値)
- 重要
-
外部表を使用するか,またはCOPY文を実行する場合,上記で求めた外部データアクセス用ライブラリが使用するメモリの最大サイズ(これをAとする)と,「6.3 HADBサーバのメモリ所要量の見積もり」で求めたHADBサーバが使用するメモリの最大サイズ(これをBとする)の合計値以上(A+B以上)のメモリを確保する必要があります。A+Bが,サーバマシンで使用できるメモリサイズより大きい場合,サーバ定義の次のオペランドの指定値を小さくすると,A+Bを削減できます。
-
adb_sys_rthd_numオペランド
-
adb_sql_exe_max_rthd_numオペランド
-
adb_sys_max_usersオペランド
-
adb_sys_uthd_numオペランド
また,外部表を指定したSQL文の実行時のメモリ所要量が大き過ぎる場合,外部表への読み込み対象となる外部データファイルの個々のファイルサイズを小さくすると,メモリ所要量を削減できます。外部データファイルを分割して,個々のファイルサイズを小さくすることを検討してください。
-