pureQueryXML ファイル内の個々のステートメントのスタック・トレース

ほとんどの場合、pureQueryXML ファイルには、各 SQL ステートメントに対して少なくとも 2 つのスタック・トレースが含まれています。

最初のスタック・トレースはアプリケーションが SQL ステートメントを定義しているポイントに対応し、第 2 のスタック・トレースはアプリケーションが SQL ステートメントを実行するポイントに対応します。アプリケーションのコードの複数のポイントで 1 つの SQL ステートメントを複数回準備して実行する場合、pureQuery はこれらの複数のポイントでのスタック・トレースをキャプチャーします。

2.1 より前のリリースから pureQueryXML ファイルを使用してインクリメンタル・キャプチャーを実行する場合、pureQuery は、そのファイルを現在の形式にマイグレーションします。この変換処理の中で、pureQuery はキャプチャー済みの既存の SQL ステートメント用のスタック・トレースを、新しいファイル構造の中の以下のいずれかの場所に配置します。
  • addBatch() または addDBBatch() メソッドからスタック・トレースが得られた場合、そのスタック・トレースは定義ポイントに移動されます。
  • それ以外のメソッドからスタック・トレースが得られた場合は、実行ポイントに移動されます。

pureQuery が SQL ステートメント用のスタック・トレースを収集する際の収集元アプリケーションの一覧を、次の表に示します。

表 1. pureQuery がスタック・トレースを収集する際の収集元アプリケーション・コード内のポイント
シナリオ アプリケーションが SQL ステートメントを定義しているポイントであると pureQuery が判断する際に考慮する要素 アプリケーションが SQL ステートメントを実行するポイント
アプリケーションが prepareStatement API を使用して SQL ステートメントを実行しており、prepareStatement メソッドと execute メソッドがコード内の異なる場所で呼び出されている。 アプリケーションが prepareStatement() メソッドを呼び出しているコード行 アプリケーションが execute() メソッドを呼び出しているコード行
アプリケーションが prepareStatement API を使用して SQL ステートメントを実行しており、prepareStatement メソッドと execute メソッドが同じ行にある。 アプリケーションが prepareStatement() メソッドを呼び出しているコード行 アプリケーションが execute() メソッドを呼び出しているコード行
アプリケーションが Statement API を使用して SQL ステートメントを実行している。 アプリケーションが execute() メソッドを呼び出しているコード行 アプリケーションが execute() メソッドを呼び出しているコード行
アプリケーションが Statement オブジェクトのバッチの一部である SQL ステートメントを実行しており、異種のステートメントが混在している。 アプリケーションが addBatch メソッドを呼び出しているコード行 アプリケーションが executeBatch メソッドを呼び出しているコード行
アプリケーションが PreparedStatement オブジェクトのバッチの一部である SQL ステートメントを実行している。 アプリケーションが prepareStatement() メソッドを呼び出しているコード行 アプリケーションが executeBatch メソッドを呼び出しているコード行
アプリケーションが PreparedStatement オブジェクトのバッチの一部である SQL ステートメントを実行しており、異種のステートメントが混在している。 各 PreparedStatement オブジェクトに対し、アプリケーションが prepareStatement() メソッドを呼び出しているコード行 各 PreparedStatement オブジェクトに対し、アプリケーションが executeBatch メソッドを呼び出しているコード行

pureQueryXML ファイル内でスタック・トレースを使用すると、アプリケーションのトラブルシューティングに役立てることができます。pureQuery には、スタック・トレースの内容、数、長さを制御するための 3 つのプロパティーが用意されています。

packagePrefixExclusion
このプロパティーを使用すると、アプリケーションの一部ではない Java パッケージ用のスタック・トレース項目を除外できます。
maxStackTracesCaptured
このプロパティーを使用すると、キャプチャーする各 SQL ステートメント用に pureQuery が記録する定義スタック・トレースと実行スタック・トレースの最大数を設定できます。
stackTraceDepth
このプロパティーを使用すると、各スタック・トレース用に pureQuery が記録する項目の最大数を設定できます。

これらのプロパティーの詳細については、クライアント最適化のための SQL ステートメントのキャプチャーを参照してください。


フィードバック