統計情報とは

統計情報を収集することで、クエリ実行時にオプティマイザが正しいプロジェクションを選択する精度が
向上し安定したパフォーマンスを得ることができます。
統計情報の収集を実行すると、ディスクのデータを読み込み、カーディナリティや、データの各ノードの
分散状況といった情報を収集します。収集したデータはカタログに書き込まれます。

統計情報を取得するタイミング

統計情報は可能な限り最新であることが好ましいため、日毎のバッチ処理に組み込む等頻繁に取得することが理想的です。

頻繁に取得することが難しい場合は、以下のタイミングを目安として取得してください。
・初期データロード後
・データが50%以上変更された場合
・時間が経過して、クエリのパフォーマンスが変わった場合

統計情報の取得

統計情報の取得方法は以下の2つがあります。
1.ANALYZE_STATISTICS()関数を使用する
2.ANALYZE_HISTOGRAM()関数を使用する

ANALYZE_STATISTICS()関数

ANALYZE_STATISTICS()関数を使用すると、ディスクの10%のデータを読み込み統計情報を収集します。


例)table1テーブルの統計情報を取得したい場合

※正常に終了した場合は、0が返されます。

ANALYZE_HISTOGRAM()関数

ANALYZE_HISTOGRAM()関数を使用すると、読み込むデータのパーセンテージを選択して
統計情報を取得することができます。


例)table1テーブルの50%のデータを読み込み統計情報を取得したい場合

※正常に終了した場合は、0が返されます。

ANALYZE_HISTOGRAM()関数利用時の注意点

読み込むデータ量を指定(1~100%)して統計情報を取得することができるため、
ANALYZE_STATISTICS()関数と比べ、より精度の高い統計情報を取得することができます。
しかし大量のデータを読み込むことから、パフォーマンスに影響を与える可能性があるため、
使用するテーブルや時間帯に注意するようにしてください。

参考


以下のマニュアルも合わせてご確認ください。

ANALYZE_STATISTICS
ANALYZE_HISTOGRAM

検証バージョンについて

この記事の内容はVertica 7.2で確認しています。