PostgreSQLスキルアップノート(自己啓発のための個人サイト)

バキューム・概要編


【一覧に戻る】
マニュアルへのリンクは9.2としています。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■■■■ PostgreSQL スキルアップノート
■■■■
■◆■■ バキューム・概要編
■■■■
■■■■
■■■■ 2012/10/26
■■■■ 使用環境:PostgreSQL9.1.4 (CentOS6.2)
                                                                   (C) 2012 ohdb
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【マニュアル】

・VACUUM概要   →●[マニュアル]
・vacuumdbコマンド →●[マニュアル]
・VACUUM文         →●[マニュアル]

【マニュアル参考】

・第18章サーバの設定・自動Vacuum作業→●[マニュアル]
・第18章サーバの設定・コストに基づくVacuum遅延  →●[マニュアル]


【その他】
 −



■1■ 概要
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


1.PostgreSQLはなぜVACUUMが必要?
──────────────────────────────

・MVCC実現のためにPostgreSQLでは追記型を採用
・更新・削除ごとに行が追加、放置するとどんどん肥大化していく

※MultiVersion Concurrency Control:多版型同時実行制御


2.バキュームで実行されることは?
──────────────────────────────
・更新・削除で増えていくディスク領域の復旧/再利用
・プランナ用の統計情報の更新。
・可視性マップの更新。
・トランザクションIDの周回防止。


 【参考】 9.2からは可視性マップの情報を使ってインデックスオンリースキャンができるようになった。
          可視性マップ   →●[マニュアル]

3.バキュームの種類は?
──────────────────────────────

(1)標準VACUUM (コンカレントバキューム)

    ・運用中実行可能・処理時間小
    ・ただし処理中はALTER TABLE ADD COLUMNなどの定義変更は不可
 
(2)VACUUM FULL

    ・運用中実行不可(テーブル排他ロック)・処理時間大
    ・多くの容量回収


・標準VACUUMの使用が推奨されている。(VACUUM FULLは避ける)
・後述の自動バキュームデーモンによる自動化あり。



4.領域はどのように効果が出るか?
──────────────────────────────

標準VACUUMの場合

 テーブルとインデックス内の不要な行に削除のマークを付けるだけ。
 OSファイルとして開放するわけではない。(ただし例外があり)

VACUUM FULLの場合

 OSファイルのサイズの縮小可能




■2■ 自動バキュームデーモン
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
詳細は別ページにて記載。

・自動バキュームデーモンは、「強く推奨」されている。
・デフォルトは自動バキューム有効 
・VACUUMとともにANALYZEも実施される。
・プロセス構成は、自動バキュームランチャと自動バキュームワーカプロセス






■3■ バキュームの実際の運用
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
詳細は別ページにて記載。

・標準VACUUMを中心とした運用
・自動バキュームデーモンを使う。
・領域を最小にすることが目的ではなく、ほどよい程度で安定化させることが重要

・自動バキュームに頼らない運用はマニュアルでは推奨していない。




■4■ 参考・アナライズ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
詳細は別ページにて記載。


プランナ用の統計情報の更新(ANALYZE)・・・「アナライズ」

・自動バキュームの場合は必要に応じて自動でANALYZEもしてくれる。

・vacuumdbで実行する場合はオプションで制御する。 
  -z  アナライズも一緒に実施
  -Z  アナライズのみを実施(vacuumは行わない)

・VACUUM文のオプションとしても持っている。VACUUM ANALYZE・・

・テーブルや列を指定したANALYZEもできるが、アナライズは高速なので単純にDB全体に対して実施した方がよいと方針記載あり。

・自動バキュームの場合、外部テーブルはANALYZE対象外になる。必要に応じて独自に対応のこと。


以上 
inserted by FC2 system