統計情報とは
統計情報を収集することで、クエリ実行時にオプティマイザが正しいプロジェクションを選択する精度が向上し安定したパフォーマンスを得ることができます。
統計情報の収集を実行すると、ディスクのデータを読み込み、カーディナリティや、データの各ノードの
分散状況といった情報を収集します。収集したデータはカタログに書き込まれます。
統計情報を取得するタイミング
統計情報は可能な限り最新であることが好ましいため、日毎のバッチ処理に組み込む等頻繁に取得することが理想的です。頻繁に取得することが難しい場合は、以下のタイミングを目安として取得してください。
・初期データロード後
・データが50%以上変更された場合
・時間が経過して、クエリのパフォーマンスが変わった場合
統計情報の取得
ANALYZE_STATISTICS()関数を使用することにより、統計情報の取得を行えます。ANALYZE_STATISTICS()関数
ANALYZE_STATISTICS()関数の構文は以下です。
1 |
dbadmin=> SELECT ANALYZE_STATISTICS('テーブル名','カラム名',パーセンテージ); |
引数 | 概要 |
---|---|
テーブル名 | 統計情報を取得したいテーブルを指定します。 何も指定しなかった場合、データベース内の全ての表とプロジェクションの統計情報が収集されます。 |
カラム名 | 統計情報を取得したいカラムをカンマ区切りで指定します。 何も指定しなかった場合、指定したテーブル内の全てのプロジェクションの統計情報が収集されます。 |
パーセンテージ | ディスクから取得するデータの割合を指定します。 指定しなければ自動的に10に設定されます。 |
例)table1テーブルの統計情報を取得したい場合
1 2 3 4 5 |
dbadmin=> SELECT ANALYZE_STATISTICS('table1','col1,col2,col3',50); ANALYZE_STATISTICS -------------------- 0 (1 row) |
※正常に終了した場合は、0が返されます。
読み込むデータ量を指定する際の注意点
読み込むデータ量を指定(1~100%)して統計情報を取得する場合、より精度の高い統計情報を取得することができます。しかし大量のデータを読み込むことから、パフォーマンスに影響を
与える可能性があるため、使用するテーブルや時間帯に注意するようにしてください。
参考
以下のマニュアルも合わせてご確認ください。ANALYZE_STATISTICS
https://my.vertica.com/docs/9.1.x/HTML/index.htm#Authoring/SQLReferenceManual/Functions/VerticaFunctions/ANALYZE_STATISTICS.htm?Highlight=analyze_statistics