概要
TDVのパフォーマンス向上やビューの実行速度、データサービスへの負荷軽減を行う方法について概要を説明します。
1. メモリ管理
TDVのTotal Available Memory(利用できるJVMのヒープメモリサイズ)はデフォルトで2GBです。
TDVがインストールされているサーバーによって、TDVのメモリに関するパラメータをチューニングする必要があります。
TDVのメモリに関するパラメータの詳細およびチューニングについては以下の記事をご参照ください。
2. データソース設定
データソースの「情報」タブの「リソース機能」に警告メッセージが表示されている場合があります。
以下は Oracle 19c (Thin Driver) の場合です。
この状態の場合、データソースとTDVの設定が異なっているため、パフォーマンスが低下する可能性があります。
修正するためには、以下の手順でアダプタの設定ファイルを編集します。
1. アダプタの設定ファイルが存在する以下のパスに移動します。
[TDV Serverインストールフォルダ]\conf\adapters\system\[アダプタ名]
カスタムJDBCアダプタの場合は以下のパスに移動します。
[TDV Serverインストールフォルダ]\conf\adapters\custom\[アダプタ名]
2. <adapter name>_values.xml
というファイル名形式のファイルをテキストエディタなどで開きます。
3. ファイル内をcomparisonCaseInSensitive
で検索し、/runtime/query/comparisonCaseInSensitive
のname属性を持つattributeを検索します(コメントアウトされています)。
4. 該当のattribute全体をコピーし、ファイル先頭から4行目あたり、Please insert customized elements after this line.
のコメント下にペーストします。
5. value属性を、「情報」タブの「大文字小文字の区別の設定」の警告メッセージに合わせて変更します。本手順ではvalue属性を「true」とします。
oracle_19c_thin_driver
の場合は以下の通りです。
<?xml version="1.1" encoding="UTF-8"?>
<common:attributes xmlns:common="http://www.compositesw.com/services/system/util/common">
<!-- Please insert customized elements after this line. -->
<ns8:attribute xmlns:ns8="http://www.compositesw.com/services/system/util/common">
<ns8:name>/runtime/query/comparisonCaseInSensitive</ns8:name>
<ns8:type>BOOLEAN</ns8:type>
<ns8:value>false</ns8:value>
<ns8:configID>jdbcds.comparisons_case_insensitive</ns8:configID>
</ns8:attribute>
6. ファイル内をtrailingSpaceIncludeInComparison
で検索し、/runtime/query/trailingSpaceIncludeInComparison
の name 属性を持つ attribute を検索します(コメントアウトされています)。
7. 該当の attribute 全体をコピーし、ファイル先頭から4行目あたり、Please insert customized elements after this line.
のコメント下にペーストします。
8. value属性を、「情報」タブの「末尾のスペースを無視」の警告メッセージに合わせて変更します。本手順ではvalue属性を「false」とします。
<ns26:attribute xmlns:ns26="http://www.compositesw.com/services/system/util/common">
<ns26:name>/runtime/query/trailingSpaceIncludeInComparison</ns26:name>
<ns26:type>BOOLEAN</ns26:type>
<ns26:value>false</ns26:value>
<ns26:configID>jdbcds.trailing_spaces_included_in_comparison</ns26:configID>
</ns26:attribute>
9. TDV Serverサービスを再起動し、警告メッセージが解消されていることを確認します。
3. 実行計画
SQL実行計画は、全体的なレベルと各クエリーノードのレベルの両方から、TDVがSQLクエリーの実行をどのように計画しているかを示しています。実行計画を確認することで、クエリーをチューニングしパフォーマンスを向上させることができます。
なお、公式ドキュメントや本記事において、「実行計画」「実行プラン」「クエリープラン」などの表現が使われていますが、これらは同じものを指しています。
3.1 実行計画の表示方法
詳細は以下の記事をご参照ください。
3.1. クエリチューニング
実行計画を分析し、フィルタリング、ソート、その他データ処理のための等式または比較条件をデータソース側にプッシュダウンされているか確認します。
詳細は以下の記事をご参照ください。
4. キャッシュ
データソースの更新頻度は低いものの、アクセス頻度の高いビューやテーブル(例:製品マスター)について、TDVサーバや外部データベース内で実データをキャッシュしておくことで、クエリパフォーマンスを向上させることができる場合があります。キャッシュを物理レイヤー・データソースのテーブルなどの下位層のリソースに適用することで、上位層のビューからのアクセス速度の高速化が期待できます。
キャッシュについてはTDVキャッシング(公式ドキュメント)や当ヘルプセンターのキャッシュ関連記事をご参照ください。
5. インデックス・主キー・外部キー
データ検索の効率を上げるため、ビューに対しインデックス・主キー・外部キーのメタデータ定義することができます。
データソースにインデックス・主キー・外部キーが定義されていない場合、効果が発揮されません。
6. 基数統計(Cardinality Statistics)
データソース内のテーブルまたはTDV内のビューが持つユニーク値の分布を取得し、クエリ結果としてどれほどのレコード数が出力されるかを推定し、クエリの最適化を行うことができます(統計情報の取得にはキャッシュの有効化が前提となります)。
詳細は以下の記事をご参照ください。