PostgreSQLスキルアップノート(自己啓発のための個人サイト)
アナライズ(プランナ用統計情報の更新)
【一覧に戻る】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■■■■ PostgreSQL スキルアップノート
■■■■
■◆■■ アナライズ(プランナ用統計情報の更新)
■■■■
■■■■
■■■■ 2012/11/2
■■■■ 使用環境:PostgreSQL9.1.4 (CentOS6.2)
(C) 2012 ohdb
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
★自己都合により実機確認は9.1、マニュアルへのリンクは9.2としています。
・マニュアル
プランナ用統計情報の更新 →●[マニュアル]
vacuumdbコマンド →●[マニュアル]
VACUUM文 →●[マニュアル]
ANALYZE文 →●[マニュアル]
pg_statistic(統計保存先)→●[マニュアル]
・マニュアル参考(本ページ記載対象外)
プランナで使用される統計情報 →●[マニュアル]
プランナが統計情報をどのように使用するか →●[マニュアル]
・用語
「問い合わせ計画」「PostgreSQL問い合わせプランナ」「プランナ用の統計情報」「ANALYZE」
「プランナ用の統計情報の更新」 ・・ANALYZEのこと
■1■ プランナ用統計情報の収集方法
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1.収集対象
──────────────────────────────
以下の通り。
・自動(自動バキュームデーモンの中から)
・手動
・ANALYZE文
・VACUUM文
・vacuumdbコマンド
■2■ アナライズの運用方法
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
基本的には、自動バキューム運用の中でアナライズも一緒に行われる。
大量更新のタイミングで独自の実行を併用することはケースにより必要となる。
例)バキュームとアナライズをセットで実施
【□】 vacuumdb -d test1 -z -v > logfile_vacuumdb.log 2>&1
アナライズだけを実行したい場合は大文字Zオプション
例)
【□】 vacuumdb -d test1 -Z -v
【注意】vacuumdbコマンド-vは標準エラー出力にだされる
以上、シェルスクリプトで扱いやすいvacuumdbコマンドを例に記載。
この他、VACUUM文(VACUUM ANALYZE) とANALYZE文があるがこちらについては記載省略。
■3■ その他
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・自動バキュームデーモンは、外部テーブルへのANALYZEは対象外
create temp tableで作成したものも同様で必要なら自分でANALYZEする必要がある。
・アナライズは必要に応じて特定の列にも実行可能(データ分布の規則性がない列など)
調整手段
・ALTER TABLE SET STATISTICS
・default_statistics_targetパラメータ(データベース全体のデフォルト)
どちらにしても最初から列単位に実行しようと計画することはないはず・・
あくまでも性能チューニングが必要になったときの手段。
■4■ 保留・その他メモ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・
----------------------------------------------------------------------------------------
またデフォルトで、関数の選択性に関して利用可能な制限付きの情報があります。
しかし、関数呼び出しを使用する式インデックスを作成する場合、有用な統計情報が関数に関して収集されます。
これにより式インデックスを使用する問い合わせ計画を大きく改良することができます。
----------------------------------------------------------------------------------------
・・・ファンクション索引(PostgreSQLでは「式に対するインデックス」)で関数使用時になにか制限がある?
ということ?
いずれ確認
http://www.postgresql.jp/document/9.2/html/indexes-expressional.html
以上