Cosminexus 簡易構築・運用ガイド

[目次][用語][索引][前へ][次へ]

付録H.1 JDBCのメモリサイズの計算式に使用するデータのサイズ

JDBCのメモリサイズの計算式に使用するデータのサイズについて,(1)から(10)で説明します。

<この項の構成>
(1) Connectionオブジェクトサイズ
(2) Statementオブジェクトサイズ
(3) ResultSetオブジェクトサイズ
(4) PreparedStatementオブジェクトサイズ
(5) CallableStatementオブジェクトサイズ
(6) ?パラメタの実データサイズ
(7) 検索データのトータルサイズ
(8) SQLサイズ
(9) bufSizeの値によるデータサイズ
(10) トレースサイズ

(1) Connectionオブジェクトサイズ

Connection オブジェクトサイズ(単位バイト)の計算式を次に示します。

Connectionオブジェクトサイズ=12235001+(803641+bufSizeの値2×1024)×Connectionインスタンス数3

Connectionオブジェクトサイズとして,次のどちらかのタイミングで「bufSizeに指定した値 × 生成したコネクション数分のメモリ」をJavaヒープ領域に確保します。
  • コネクションプールのウォーミングアップ機能使用時
  • 初回getConnection()発行時
bufSizeに必要以上に大きな値を設定すると,Connectionオブジェクトサイズ分のメモリを確保したときにJavaヒープを使い切り,OutOfMemoryErrorが発生するおそれがあります。
HiRDBのBLOB型データやBINARY型データへアクセスする場合は,bufSizeに大きな値を指定しないで,HiRDBの位置付け子機能を使用することを検討してください。HiRDBの位置付け子機能については,マニュアル「HiRDB 解説」を参照してください。

注※1
オブジェクトを構成する大きさであり,実行するプラットフォームおよびJDKのバージョンにより若干値が異なる場合があります。

注※2
bufSizeのデフォルト値は64です。

注※3
Connectionインスタンス数とは,同時接続数のことです。

(2) Statementオブジェクトサイズ

Statementオブジェクトサイズ(単位バイト)の計算式を次に示します。

Statementオブジェクトサイズ=10001+14001×Statementインスタンス数2

注※1
オブジェクトを構成する大きさであり,実行するプラットフォームおよびJDKのバージョンにより若干値が異なる場合があります。

注※2
Statementインスタンス数とは,システム全体で同時に使用するStatement数です。システム全体でStatementオブジェクトを使用しないときは0になります。

(3) ResultSetオブジェクトサイズ

ResultSetオブジェクトサイズは,接続先のデータベースがOracle8i以降で,BLOB,CLOBの列属性がある表を検索した場合と,それ以外の処理を実行した場合で異なります。それぞれの場合の,ResultSetオブジェクトサイズ(単位バイト)の計算式を次に示します。

  1. 接続先のデータベースがOracle8i以降で,BLOB,CLOBの列属性がある表を検索した場合
    ResultSetオブジェクトサイズ=
    24001+{34001+MIN(ROW_SIZEの値2×1024×1024, BLOBおよびCLOBの実データ長)×2}×ResultSetインスタンス数3
  2. 1.以外の処理を実行した場合
    ResultSetオブジェクトサイズ=24001+34001×ResultSetインスタンス数3
    注※1
    オブジェクトを構成する大きさであり,実行するプラットフォームおよびJDKのバージョンにより若干値が異なる場合があります。
    注※2
    デフォルト値は16です。
    注※3
    ResultSetインスタンス数とは,システム全体で同時に使用するResultSet数です。システム全体で,検索SQLを実行しない,またはResultSetオブジェクトを生成しないときは0になります。

(4) PreparedStatementオブジェクトサイズ

PreparedStatementオブジェクトサイズ(単位バイト)の計算式を次に示します。

PreparedStatementオブジェクトサイズ=

799001+47001×PreparedStatementインスタンス数2

注※1
オブジェクトを構成する大きさであり,実行するプラットフォームおよびJDKのバージョンにより若干値が異なる場合があります。

注※2
PreparedStatementインスタンス数とは,全体で同時に使用するPreparedStatement数です。システム全体でPreparedStatementオブジェクトを使用しないときは0になります。

(5) CallableStatementオブジェクトサイズ

CallableStatementオブジェクトサイズ(単位バイト)の計算式を次に示します。

CallableStatementオブジェクトサイズ=

650001+47001×CallableStatementインスタンス数2

注※1
オブジェクトを構成する大きさであり,実行するプラットフォームおよびJDKのバージョンにより若干値が異なる場合があります。

注※2
CallableStatementインスタンス数とは,全体で同時に使用するCallableStatement数です。システム全体でCallableStatementオブジェクトを使用しないときは0になります。

(6) ?パラメタの実データサイズ

?パラメタの実データサイズ(単位バイト)の計算式を次に示します。

?パラメタの実データサイズ=

90001+1801×?パラメタ数2+?パラメタのトータル長2

注※1
オブジェクトを構成する大きさであり,実行するプラットフォームおよびJDKのバージョンにより若干値が異なる場合があります。

注※2
?パラメタ数と?パラメタのトータル長は,システム全体で同時に指定する,?パラメタ数と?パラメタのトータル長です。?パラメタのトータル長は,実データの長さの総和です。?パラメタに指定する列属性ごとの実データ長を次の表に示します。

表H-3 パラメタ長一覧(JDBC内)

データベース種別 列属性 データ長(バイト)
HiRDB INTEGER 4
SMALLINT 2
LARGE DECIMAL(m, n) ↓(m/2)↓+1
FLOATまたはDOUBLE PRECISION 8
SMALLFLTまたはREAL 4
上記以外 指定した実データ長
ORACLE,Oracle8i NUMBER 指定した実データを数値文字列で表現したときの実際の長さ
FLOAT 8
上記以外 指定した実データ長

(7) 検索データのトータルサイズ

検索データのトータルサイズ(単位バイト)は,実際のレコード長+4×(取得する列数+1)を1件のレコード長とし,検索した件数の総和になります。実際のレコード長は列属性ごとの実際のデータ長の総和です。

なお,検索データのトータルサイズは,ResultSetのタイプがスクロール可能のときだけ必要です。それ以外は0になります。

列属性ごとの実際のデータ長を次の表に示します。

表H-4 検索する列のデータ長一覧(JDBC内)

データベース種別 列属性 データ長(バイト)
HiRDB INTEGER 4
SMALLINT 2
LARGE DECIMAL(m, n) ↓(m/2)↓+1
FLOATまたはDOUBLE PRECISION 8
SMALLFLTまたはREAL 4
上記以外 データベースに格納している実データ長
ORACLE,Oracle8i NUMBER データベースに格納している実データを数値文字列で表現したときの実際の長さ
FLOAT 8
上記以外 データベースに格納している実データ長

(8) SQLサイズ

実際のSQLのサイズがbufSizeの値×1024バイト以上のときだけ必要です。それ以外は0になります。なお,bufSizeのデフォルト値は64です。

(9) bufSizeの値によるデータサイズ

bufSizeの値によるデータサイズ(単位バイト)の計算式を次に示します。なお,計算式は,受信バッファプール数指定機能の使用の有無によって異なります。

(10) トレースサイズ

トレースサイズの計算式(単位バイト)を次に示します。

トレースサイズ=2048×メモリ情報取得量

メモリ情報取得量とは,環境変数DAB_ONMEMNUMの値です。デフォルト値は1000です。