次のオプションは、DBQLogTblおよびDBQLSummaryTblに記録するデータ量と記録する時期を制御します。
LIMIT SQLTEXT=n
このオプションは、DBQLogTblに記録された問合わせのために取り込まれるSQLテキストの量を決定します。
デフォルト行の最初の200文字を下回るまたは上回る文字を自動的に取り込む場合、このオプションを使用します。 DBQLogTblへのテキスト キャプチャを完全に停止するためには、0を指定します。 DBQLogTblへのテキスト取込みを完全に停止するためには、0を指定します。LIMIT SQLTEXT=nを指定します。DBC.DBQLogTblに記録するSQLテキストの量を制御するnは0より大きい値です。例えばSQLの500文字をログに記録するためには、以下を実行依頼します。
BEGIN QUERY LOGGING LIMIT SQLTEXT=500 ON USER2;最大値は10,000文字。LIMIT SQLTEXTを指定し、値を指定しなかった場合には、10,000文字までがDBQLogTblに記録されます。
文の長さにかかわらず全体を格納するためには、WITH SQLオプションを指定すると、テキスト全体を格納するのに必要な行数がDBQLSQLTblに記録されます。
WITH SQLオプションを指定し、DBQLSQLTblに記録している場合、LIMIT SQLTEXT=0を定義して、デフォルト行とDBQSSQLTblへの冗長なロギングを防ぐことができます。
LIMIT SUMMARY=n1, n2, n3 (units)
このオプションを使用すると、持続期間の間隔またはI/Oの数で問合わせがグループ化され、各グループがカウントされて、カウント結果がDBQLSummaryTblに格納されます。3つの間隔まで指定できます。n3.より長くなる場合は、デフォルトで4つ目の間隔が作成されます。
3つすべての間隔を指定する場合、間隔は以下のようになります。
- 0-n1
- n1-n2
- n2-n3
- >n3
SUMMARYはDBQLogTblには記録しないため、多数の短い問合わせ(例えばOLTPアプリケーション)を追跡するのに役立ちます。
LIMIT SUMMARYオプションの特徴は次のとおりです。
- サマリー情報を10分のシステム制御間隔でフラッシュする
- 10分以内にサマリー ロギング ユーザー/アカウントのデータが収集されなかった場合は、行を書き込まない
- LIMIT THRESHOLDとは一緒に使用できない
- ロギング オプションとは一緒に使用できない
LIMIT SUMMARYの間隔は次のいずれかで定義できます。
単位 | サマリー データ集計結果 |
---|---|
CPUTIME | 正規化されたAMP CPU時間。n1、n2、n3は1/100秒単位で指定します。 |
CPUTIMENORM | 正規化されたAMP CPU時間。n1、n2、n3は1/100秒単位で指定します。 CPUTIMENORMなどの正規化された列は、共存システム用に限定されます。
|
ELAPSEDSEC | 秒単位の経過時間。単位を指定しない場合、ELAPSEDSECがデフォルトです。 |
ELAPSEDTIME | 経過時間。n1、n2、n3は1/100秒単位で指定します。 |
IOCOUNT | 合計I/O数。n1、n2、n3はI/O数で指定します。 |
単位を指定しない場合、サマリーはELAPSEDSECに基づきます。
例えば、0~1秒、1~2秒、2~3秒といった経過時間に基づいて問合わせをグループ化し、3秒を超えて実行された問合わせをログに記録するには、次の文を実行します。
BEGIN QUERY LOGGING LIMIT SUMMARY=1,2,3 ON ALL;CPU時間が0.1、0.5、1.0秒(つまりCPU秒が0~0.1、0.1~0.5、0.5~1.0、1.0以上の4つのグループ)の問合わせを要約するには、次の文を実行します。
BEGIN QUERY LOGGING LIMIT SUMMARY=10,50,100 CPUTIME ON ALL;「生の」CPU時間ではなく正規化されたCPU時間を使用して問合わせをカウントするには、CPUTIMENORM修飾子を使用します。
I/Oに基づいて問合わせをグループ化するには、次の文を実行します。
BEGIN QUERY LOGGING LIMIT SUMMARY=1000,5000,10000 IOCOUNT ON ALL;LIMIT THRESHOLD = n [units]
n"units"以下で実行された問合わせはDBQLSummaryTblにカウントされます。nunitsを超えて実行された問合わせはDBQLogTblに記録されます。nを指定しない場合、デフォルトは5unitsです。単位は次のいずれかです。
単位 | サマリー データ集計結果 |
---|---|
CPUTIME | AMP CPU時間。nは1/100秒単位で指定します。 |
CPUTIMENORM | 正規化されたAMP CPU時間。nは1/100秒単位で指定します。 CPUTIMENORMなどの正規化された列は、共存システム用に限定されます。
|
ELAPSEDSEC | 秒単位の経過時間。単位を指定しない場合、ELAPSEDSECがデフォルトです。 |
ELAPSEDTIME | 経過時間。nは1/100秒単位で指定します。 |
IOCOUNT | 合計I/O数。nはI/O数で指定します。 |
LIMIT THRESHOLDは、以下のロギング オプションと一緒に使用できます。
- OBJECTS
- STEPINFO
- SQL
オプションELAPSEDTIMEはミリ秒の指定に役立ちます。
例えば、8 CPU秒以上を使用する問合わせを詳細ログに書き込み、8 CPU秒以下の問合わせをサマリー テーブルに記録するためには、次の文を実行します。
BEGIN QUERY LOGGING LIMIT THRESHOLD=800 CPUTIME ON ALL;
THRESHOLDは1/100秒単位で指定します。THRESHOLD=8と指定すると、0.08 CPU秒に設定されます。
デフォルト値は5/100 CPU秒です。例えば、以下の文を発行したとします。
BEGIN QUERY LOGGING LIMIT THRESHOLD CPUTIME ON ALL;THRESHOLDに数値を割り当てないと、システムはデフォルトで0.05 CPU秒以下を使用した問合わせを要約し、0.05 CPU秒を超えて使用した問合わせの詳細を記録します。
「生の」CPU時間ではなく正規化されたCPU時間を使用して問合わせをカウントするには、CPUTIMENORM修飾子を使用します。
入出力数をしきい値として入出力が5,000回を超える問合わせを記録する場合は、次のように指定します。 BEGIN QUERY LOGGING LIMIT THRESHOLD=5000 IOCOUNT ON ALL;
THRESHOLDをSQLTEXTと結合すると、THRESHOLDの秒数より長く実行される問合わせの最初の200文字よりも多くの文字を取り込むことができます(短い問合わせのSQLテキストはDBQLogTblに記録されないためです)。
次のように、しきい値を指定するかどうかで、問合わせを記録するか、単にカウントするだけかが決まります。
クエリー期間 | DBQLアクション |
---|---|
しきい値の経過時間、CPU秒、またはI/O数以内に完了した。 |
|
しきい値を超えて実行された。 | DBQLSqlTbl、DBQLStepTbl、DBQLogTbl内のその問合わせに関するデフォルト行にログを記録して、タイムスタンプによる問合わせの実行時間や処理ステップの数とレベルを調べられるようにする。 |