ttOptUpdateStats

このプロシージャは、指定した表の統計を更新します。TimesTenは表に格納されているデータを参照して、システム表TBL_STATSおよびCOL_STATSを更新します。表が大きい場合、このプロセスには多少時間がかかる可能性があります。行が更新されても統計は自動的に計算されないため、このプロシージャをコールすることによって、アプリケーションで明示的に統計を計算する必要があります。

tblNameが指定されていない場合、このプロシージャは現在のユーザーが所有するすべての表に対して処理されます。ユーザーがインスタンス管理者である場合、インスタンス管理者が所有する表のみが更新されます。表がユーザーによって所有されていない場合、ユーザーは自分のユーザー名で表名を修飾して、現在のユーザーの統計を更新できます。

統計が更新されたかどうかを判断するには、この操作を実行する前と後で、システム表SYS.COL_STATSおよびSYS.TBL_STATSを確認します。

必要な権限

ユーザーが表の所有者である場合またはtblNameが指定されていない場合、このプロシージャに権限は不要です。ユーザーが表の所有者でない場合、このプロシージャにはALTER ANY TABLE権限が必要です。

TimesTen ScaleoutおよびTimesTen Classicでの使用

このプロシージャは、TimesTen Classicでサポートされています。

TimesTen Scaleoutアプリケーションでこの組込みプロシージャをコールできます。

TimesTen Scaleoutでは、このプロシージャはグリッド内のすべての要素に対して実行されます。

関連ビュー

このプロシージャには関連ビューはありません。

構文

ttOptUpdateStats(['tblName'], [invalidate], [option])

パラメータ

ttOptUpdateStatsには、次のパラメータがあります。

パラメータ 説明

tblName

TT_CHAR(61)

アプリケーション表の名前。表の所有者を含めることができます。NULLまたは空の文字列を値として指定すると、現在のユーザーのすべての表の統計が更新されます。

表名の指定にシノニムは使用できません。

invalidate

TT_INTEGER

0 (no)または1 (yes)。invalidateが1の場合、ALTER TABLE DROP TABLE文とALTER TABLE ADD COLUMN FOR SELECT * FROM TABLE文以外のすべてのコマンドが、次の実行時に再準備するようにマークされます。これらの例外については、手動で再準備する必要があります。invalidateが0の場合、統計は変更されたとはみなされず、既存のコマンドは再準備されません。

invalidateパラメータはオプションで、デフォルトは0です。

option

TT_INTEGER

完全な時間隔の統計情報の収集をするかどうかを指定します。このオプションに有効な値は、次のとおりです。

NULLまたは0 - 列に範囲索引が存在する場合にのみ、完全な時間隔統計を収集します。範囲索引が存在しない場合は、単一の時間隔統計を収集します。

1 - 完全な時間隔統計を収集しません。単一の時間隔統計のみが収集されます。

optionパラメータはオプションで、デフォルトは0です。

詳細は、次のノートを参照してください。

結果セット

ttOptUpdateStatsは結果を返しません。

CALL ttOptUpdateStats ( 'ACCTS', 1 );

ACCTS表を更新し、ACCTS表を参照するすべてのコマンドを次回の実行時に再準備します。

CALL ttOptUpdateStats('', 1);

現在のユーザーのすべての表を更新し、それらの表に対するコマンドを次回の実行時に再準備します。

CALL ttOptUpdateStats('ACCTS', 0, 1);

単一の時間隔統計を収集します。

ノート

指定した表名が空の文字列である場合、統計は現在のユーザーのすべての表について更新されます。

完全な時間隔統計を収集する場合、表の列の総数は20以下の時間隔に分割され、各時間隔の配分が統計に記録されます。新しい統計には、次の情報が含まれます。

  • 時間隔の数

  • 列のNULL値の総数

  • 列のNON NULL UNIQUE値の総数

  • 表の行の総数

  • 時間隔情報(各時間隔には次の情報が含まれます)

    • 最小値

    • 最大値

    • 最大頻度の値

    • 最大頻度の値の数

    • 最大頻度の値と異なる値の行の数

    • 最大頻度の値以外の一意値の数

完全な時間隔統計を収集するには、データをソートする必要があります。

完全な時間隔統計を選択しない場合、全体の配分を単一の時間隔として処理することにより、統計が収集されます。

TimesTenでは、パフォーマンス上の理由から、統計の計算時に表ロックおよび行ロックは保持されません。ただし、TimesTenシステム表に対するロックは保持されます。統計の計算をそのように行った場合でも、パフォーマンスが低下する可能性があります。統計は、正確に計算するよりも推定した方が一般にパフォーマンスは向上します。統計の推定については、「ttOptEstimateStats」を参照してください。

システム表を更新する権限がある場合、空の表リストを指定して統計を見積もり、または更新すると、システム表の統計も更新されます。