Hitachi

Hitachi Advanced Database システム構築・運用ガイド


6.3.25 外部データアクセス用ライブラリ使用時のメモリ所要量の求め方

外部表を使用するか,またはCOPY文を実行する場合,HADBサーバが使用するメモリの最大サイズとは別に,外部データアクセス用ライブラリが使用するメモリ(プロセスメモリ)の最大サイズが必要です。

外部データアクセス用ライブラリが使用するメモリの最大サイズは,次に示す計算式から求めてください。

計算式(単位:キロバイト)

外部データアクセス用ライブラリが使用するメモリの最大サイズARROW_INIT_SIZE+(ARROW_SELECT_SIZE※1ARROW_COPY_SIZE※2)
                          ×MIN(rthd_nummax_users×sql_rthd_num
注※1

外部表を指定したSQL文を実行する場合に加算してください。

注※2

COPY文を実行する場合に加算してください。

変数の説明

ARROW_INIT_SIZE

次に示す計算式から求めてください。

計算式

ARROW_INIT_SIZE=(cpu_core_num×9789,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_SIZEMAX_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文の実行時のメモリ所要量が大き過ぎる場合,外部表への読み込み対象となる外部データファイルの個々のファイルサイズを小さくすると,メモリ所要量を削減できます。外部データファイルを分割して,個々のファイルサイズを小さくすることを検討してください。