SQLコマンド・キャッシュに格納されているSQL文の表示
SQL文、組込みプロシージャなど、実行後のすべてのコマンドは、一時メモリーを使用するSQLコマンド・キャッシュに格納されます。
コマンドはSQLコマンド・キャッシュの制限に達するまで格納され、その後は最後に使用されたコマンドが削除された後に新しいコマンドが格納されます。SQLコマンド・キャッシュに格納されているこれらのコマンドを1つ以上取得できます。
ノート:
この項では、SQLコマンド・キャッシュに格納されたコマンドの表示方法について説明します。これらのコマンドに関連付けられた問合せ計画の表示方法については、「SQLコマンド・キャッシュに格納されているコマンドに関連付けられた問合せ計画の表示」を参照してください。
次の項では、SQLコマンド・キャッシュに格納されているコマンドを表示する方法について説明します。
パフォーマンス管理およびトラブルシューティングのコマンド
1つ以上のコマンドまたはその問合せ計画の詳細は、ttSQLCmdCacheInfo
およびttSQLCmdQueryPlan
組込みプロシージャで表示できます。問合せ計画情報は、問合せの監視およびトラブルシューティングに使用します。
コマンドおよび問合せ計画を表示すると、次の作業に役立ちます。
-
索引スキャンを使用していない更新または削除の検出。
-
すべての計画を確実に最適化することを目的とする、実行中の問合せの問合せ計画の監視。
-
SQL文を準備しないアプリケーション、または同じ文を複数回再準備するアプリケーションの検出。
-
コマンド・キャッシュ内でパフォーマンスの評価に使用されている領域の割合の検出。
SQLコマンド・キャッシュに格納されたコマンドの表示
TimesTenデータベースに対して実行されたコマンドは、SQLコマンド・キャッシュにキャッシュされます。ttSQLCmdCacheInfo
組込みプロシージャを使用すると、TimesTen SQLコマンド・キャッシュにキャッシュされた特定のコマンドまたはすべてのコマンドが表示されます。
デフォルトではすべてのコマンドが表示されますが、コマンドIDを指定すると、そのコマンドのみが取得されて表示されます。
コマンド・データは、次の形式で保存されます。
-
コマンドID。特定のコマンドまたはそのコマンドに関連付けられた問合せ計画を取得する場合に使用されます。
-
プライベート接続ID。
-
実行回数のカウンタ。
-
ユーザーがこの文を準備した回数のカウンタ。
-
ユーザーがこのSQL文を再準備した回数のカウンタ。
-
解放可能かどうかのステータスで、この値が1の場合、サブデーモンはガベージ・コレクタで領域を解放できます。値が0の場合、領域は解放可能ではありません。
-
キャッシュ内でこのコマンドに対して割り当てられている合計サイズ(バイト)。
-
コマンドを作成したユーザー。
-
最大1024文字の問合せテキスト。
-
この文のために内部的に行われたフェッチの実行回数です。
-
文が開始したときのタイムスタンプです。
-
最大ランタイムが秒単位で表示されます。
-
最後に測定されたランタイムが秒単位で表示されます。
-
最小ランタイムが秒単位で表示されます。
-
TimesTenでコンパイルされた文の一意の識別子。
-
最後に実行されたこのTimesTen文で使用された合計一時サイズ(バイト単位)。
-
このTimesTen文の実行にこれまで使用された最大一時サイズ(バイト単位)。
すべてのコマンドのリストの末尾には、キャッシュ内に格納されていたコマンド数を示すステータスが出力されます。
次の例は、ttSQLCmdCacheInfo
組込みユーティリティを使用して、SQLコマンド・キャッシュにあるすべてまたは単一のコマンドを表示する方法を示しています。
例: SQLコマンド・キャッシュ内のすべてのコマンドの表示
この例では、ttIsql
内で引数を指定しないでttSQLCmdCacheInfo
組込みプロシージャを実行し、キャッシュされたすべてのコマンドを表示します。コマンドは、簡潔な形式で表示されます。各列に列名が付加された情報を表示するには、ttSQLCmdCacheInfo
プロシージャをコールする前にvertical on
を実行してください。
Command> vertical 1; Command> call ttSQLCmdCacheInfo; SQLCMDID: 43402480 PRIVATE_COMMAND_CONNECTION_ID: -1 EXECUTIONS: 1 PREPARES: 1 REPREPARES: 0 FREEABLE: 1 SIZE: 4344 OWNER: HR QUERYTEXT: INSERT INTO employees VALUES ( 191 , 'Randall' , 'Perkins' , 'RPERKINS' , '650.505.4876' , TO_DATE('19-DEC-1999', 'dd-MON-yyyy') , 'SH_CLERK' , 2500 , NULL , 122 , 50 ) FETCHCOUNT: 0 STARTTIME: 2015-04-09 15:22:22.139000 MAXEXECUTETIME: 0 LASTEXECUTETIME: 0 MINEXECUTETIME: 0 GRIDCMDID: <NULL> TEMPSPACEUSAGE: 0 MAXTEMPSPACEUSAGE: 0 SQLCMDID: 43311000 PRIVATE_COMMAND_CONNECTION_ID: -1 EXECUTIONS: 1 PREPARES: 1 REPREPARES: 0 FREEABLE: 1 SIZE: 4328 OWNER: HR QUERYTEXT: INSERT INTO employees VALUES ( 171 , 'William' , 'Smith' , 'WSMITH' , '011.44.1343.629268' , TO_DATE('23-FEB-1999', 'dd-MON-yyyy') , 'SA_REP' , 7400 , .15 , 148 , 80 ) FETCHCOUNT: 0 STARTTIME: 2015-04-09 15:22:22.139000 MAXEXECUTETIME: 0 LASTEXECUTETIME: 0 MINEXECUTETIME: 0 GRIDCMDID: <NULL> TEMPSPACEUSAGE: 0 MAXTEMPSPACEUSAGE: 0 ... 102 rows found.
例: 単一のSQLコマンドの表示
ttSQLCmdCacheInfo
に入力としてコマンドIDを指定すると、SQLコマンド・キャッシュから単一のコマンドが表示されます。ttSQLCmdCacheInfo
組込みプロシージャにコマンドIDを入力しなかった場合、現在のすべてのコマンドに関する情報が表示されます。このとき、コマンドIDが出力の最初の列に表示されます。
次の例は、コマンドID 527973892
で識別されるコマンドを表示します。これは、簡潔な形式で表示されます(先頭に列見出しを表示するには、組込みのttSQLCmdCacheInfo
をコールする前にvertical on
を実行してください)。
Command> call ttSQLCmdCacheInfo(43311000); < 43311000, -1, 1, 1, 0, 1, 4328, HR, INSERT INTO employees VALUES ( 171, 'William', 'Smith', 'WSMITH', '011.44.1343.629268', TO_DATE('23-FEB-1999', 'dd-MON-yyyy'), 'SA_REP', 7400, .15, 148, 80), 0, 2015-04-09 15:22:22.139000, 0, 0, 0, <NULL>, 0, 0 > 1 row found.