Data Virtualizationではテーブル統計は収集されない
最終更新: 2025年3月17日
仮想表を作成するときに、一部の表の統計が正しく収集されません。
症状
仮想テーブル作成時に、表統計が収集されないことがあります。 表の統計が欠落すると、照会のパフォーマンスに重大な影響が及ぶ可能性があります。
問題の解決
この問題を解決するには、次のステップを実行します。
- 次のコマンドを実行して、表統計が欠落しているかどうかを判別します。
select cast(TABNAME as varchar(25)), TYPE, COLCOUNT, STATS_TIME from SYSCAT.TABLES where TABSCHEMA='<schema>' and CARD = -1;
<schema> を仮想テーブルのスキーマ名に置き換えます。 このコマンドは、CARD が -1 であるスキーマ内のすべてのオブジェクトをリストします。これは、統計が収集されていないことを示します。
- カーディナリティーが -1のテーブルでは、以下のコマンドを実行し、 <schema> と <table_name> を仮想化オブジェクトの名前に置き換えてください。
call SYSPROC.NNSTAT(NULL, '<schema>', '<table_name>', '<list_of_columns_commonly_used_in_predicates>', '', 2, '/tmp/<table_name>.log', ?, 1);
この呼び出しは、<list_of_columns_commonly_used_in_predicates>内の指定された列について、表レベルの統計と列レベルの統計を収集します。 表に列が少ない場合は、列リスト引数として
を渡すことによって、表内のすべての列の統計を収集できます。 この呼び出しでは、データ・ベースの統計収集方式を使用します。これは、実行にコストがかかる場合があります。 統計は、ピーク時以外の時間に収集できます。 詳細については、 SYSPROC.NNSTAT ストアード・プロシージャーを参照してください。NULL
- ステップ 1 を繰り返して、すべての表統計が収集されるようにします。
詳細については、 Data Virtualizationにおけるクエリ・パフォーマンスの向上を参照してください。
トピックは役に立ちましたか?
0/1000