Cosminexus V9 アプリケーションサーバ 機能解説 互換編
受信バッファプールに登録してプールする受信バッファの数を指定できます。この数のことを受信バッファプール数といいます。受信バッファプール数を指定することによってSQL実行時の性能を向上でき,メモリ占有量を軽減できます。
受信バッファプール数は,1〜1,024個の範囲で指定できます。受信バッファプール数を指定すると,同一コネクション内で受信バッファが再利用されます。そのため,セッションIDが異なるStatementでも,同一コネクションであれば受信バッファを再利用できます。受信バッファが,指定した受信バッファプール数よりも多く必要になった場合は,一時的に受信バッファを生成し,DABroker Libraryから実行結果のデータを受信したあとに破棄します。このような一時的に生成した受信バッファは,受信バッファプールには登録されません。
受信バッファプール数を指定した場合の,受信バッファプールの管理の概要を次の図に示します。
図4-2 受信バッファプールの管理の概要(受信バッファプール数を指定した場合)
表4-17 メソッドの動作の分類
動作 | 説明 |
---|---|
1 | メソッド実行時に受信バッファを受信バッファプールから取得する。メソッド終了後,受信バッファを受信バッファプールに戻す。 |
2 | 動作2に分類されるメソッドのうち,最初に実行するメソッドで受信バッファを受信バッファプールから取得する。メソッドが終了しても,受信バッファは受信バッファプールに戻さない。 |
3 | 動作2に分類されるメソッドで取得した受信バッファを受信バッファプールに戻す。新たな受信バッファは取得しない。 |
表4-18 SQLを実行するメソッド,およびメソッドの動作
クラス | メソッド | 動作 |
---|---|---|
Connection | prepareCall(String sql) | 1 |
prepareCall(String sql, int resultSetType, int resultSetConcurrency) | 1 | |
prepareStatement(String sql) | 1 | |
prepareStatement(String sql, int resultSetType, int resultSetConcurrency) | 1 | |
DatabaseMetaData | getProcedures(String catalog, String schemaPattern, String procedureNamePattern) | 1 |
getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern) | 1 | |
getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) | 1 | |
getSchemas() | 1 | |
getTableTypes() | 1 | |
getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) | 1 | |
getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern) | 1 | |
getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) | 1 | |
getPrimaryKeys(String catalog, String schema, String table) | 1 | |
getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate) | 1 | |
Statement | executeBatch() | 1 |
execute(String sql) | 1 | |
executeQuery(String sql) | 1 | |
executeUpdate(String sql) | 1 | |
close()※ | 3 | |
PreparedStatement | execute() | 1 |
executeQuery() | 1 | |
executeUpdate() | 1 | |
ResultSet | absolute(int row) | 2 |
afterLast() | 2 | |
first() | 2 | |
next() | 2 | |
close() | 3 |
注※ ResultSet#close()メソッドを実行していない場合だけ使用できます。
受信バッファプール数は,次のどれかの方法で指定します。また,これらを同時に指定した場合,1,2,3の優先度順に決定されます。
指定方法の詳細については,「4.7.4 データベース接続の設定」を参照してください。
受信バッファプール数は,次の式で求められる数以上の数を目安に設定します。
検索処理に必要な受信バッファ数+更新処理に必要な受信バッファ数
図4-3 アプリケーション中で同時に使用するResultSetの数
実際に必要な受信バッファ数が,この式を基に設定した受信バッファ数を超えた場合,受信バッファを新たに生成し,使用後に破棄します。このとき,生成した受信バッファは受信バッファプールに登録されません。この場合,オブジェクトの作成,破棄が頻発するため,性能が劣化することがあります。ただし,設定した受信バッファ数を超えた分の受信バッファは使用後に破棄するため,式を基に設定した場合よりメモリ占有量は軽減します。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.