付録G Cosminexus DABroker Libraryのメモリ所要量

ここでは,Cosminexus DABroker Libraryのメモリ所要量の計算式について説明します。

なお,Cosminexus DABroker Libraryのメモリ所要量の計算式には,JDBCのメモリサイズを使用します。JDBCのメモリサイズの計算式に使用するデータのサイズについては,「付録G.1 JDBCのメモリサイズの計算式に使用するデータのサイズ」を参照してください。

Cosminexus DABroker Libraryのメモリ所要量の計算式を次に示します。

メモリ所要量=128+データベース同時接続数
×〔386+A×{20+B+定義列数×2+C×2+D×E+F×(G+H)}〕+I

(凡例)
A:並列に使用しているカーソル数
並列に使用しているカーソル数は,一つのConnectionオブジェクトから派生して,同時に使用するStatementインスタンス数,PreparedStatementインスタンス数,CallableStatementインスタンス数,ResultSetインスタンス数の総和です。
B:bufSizeの値
JDBCを使用してデータベースに接続するときに指定するbufSizeの値です。
C:SQLのサイズ
SQLのサイズは,KB(キロバイト)単位に切り上げて算出してください。
D:?パラメタのサイズ
?パラメタのサイズは,一つのSQL文に指定する,?パラメタのデータ長の総和です。?パラメタに指定する列属性ごとのデータ長を次の表に示します。

表G-1 パラメタ長一覧(ネイティブライブラリ内)

データベース種別列属性データ長(バイト)備考
HiRDBINTEGER12
SMALLINT8
LARGE DECIMAL(m, n)↓(M/2)↓+7
  • Mは指定した値の精度を表します。
  • 4バイト単位で切り上げます。
FLOAT,DOUBLE PRECISION16
SMALLFLT, REAL12
CHAR(n),MCHAR(n),NCHAR(n),VARCHAR(n),MVARCHAR(n),NVARCHAR(n)指定した実データ長+84バイト単位で切り上げます。
DATE16
TIME16
TIMESTAMP(p)p=0,p=2の場合:28
p=4,p=6の場合:32
BINARY(n),BLOB(n)指定した実データ長+4
ORACLE,Oracle8iFLOAT56
DATE64
その他のデータ型指定した実データ長+544バイト単位で切り上げます。
E:配列更新の配列数
配列更新の配列数は,HiRDBの「配列を使用したINSERT機能」,「配列を使用したUPDATE機能」,または「配列を使用したDELETE機能」を使用する場合はaddBatchメソッドの実行回数,そのほかの場合は1となります。
F:検索データのサイズ
検索データのサイズは,検索する列のデータ長の総和(1行分)です。
ただし,接続するデータベースがOracleであり,CLOB,NCLOB,BLOB,BFILE,LONG LAW,LONGのどれかの列を一つ以上含む検索の場合,検索データのサイズはほかの列に関係なく,bufSizeの値となります。
列属性ごとのデータ長を次の表に示します。

表G-2 検索する列のデータ長一覧(ネイティブライブラリ内)

データベース種別列属性データ長(バイト)備考
HiRDBINTEGER4
SMALLINT2
LARGE DECIMAL(m, n)m+2
FLOAT,DOUBLE PRECISION8
SMALLFLT,REAL4
CHAR(n),MCHAR(n)n+1
NCHAR(n)n×2+1
VARCHAR(n),MVARCHAR(n)n+2
NVARCHAR(n)n×2+2
DATE11
TIME9
TIMESTAMP(p)
  • p=0の場合:20
  • p=0以外の場合:21+p
BINARY(n),BLOB(n)HiRDBの位置付け子機能を使用する場合12
HiRDBの位置付け子機能を使用しない場合(nとbufSizeの値を比較してより小さい方の値)+8bufSizeの値とは,JDBCを使用してデータベースに接続するときに指定するbufSizeの値です。
ORACLE,Oracle8iNUMBER44
VARCHAR2(n),CHAR(n),VARCHAR2(n),NCHAR(n)n+1
MLSLABEL(n),RAW(n)n
ROWID9
FLOAT8
DATE20
G:FETCHサイズ
FETCHサイズは,Statement,またはResultSetクラスのsetFetchSizeメソッドの指定値です。ただし,指定値が0,または指定を省略した場合は,次のようになります。
  • 指定値が0または指定を省略した場合のFETCHサイズ=64KB/検索データのサイズ
    計算の結果0になる場合は,1に繰り上げられます。
H:データベース用データ領域
データベース用データ領域は,接続データベースがHiRDBの場合は0,そのほかのデータベースの場合は1となります。
I:JDBCのメモリサイズ
JDBCのメモリサイズは,次の値です。
  • JDBCのメモリサイズ=(Connectionオブジェクトサイズ
    +Statementオブジェクトサイズ
    +ResultSetオブジェクトサイズ
    +PreparedStatementオブジェクトサイズ
    +CallableStatementオブジェクトサイズ
    +?パラメタの実データサイズ
    +検索データのトータルサイズ
    +SQLサイズ
    +bufSizeの値によるデータサイズ
    +トレースサイズ)/1,024
なお,それぞれのサイズの計算式については,「付録G.1 JDBCのメモリサイズの計算式に使用するデータのサイズ」を参照してください。
<この節の構成>
付録G.1 JDBCのメモリサイズの計算式に使用するデータのサイズ