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対象外になる。必要に応じて独自に対応のこと。
以上