« Informixでロックしているデータを読み取る | トップページ | 特定の文字以外を含む行の抽出 »

2015.03.13

PostgreSQLの無停止メンテナンスツール

以前、Reindexをシステム無停止で実施するためのbashスクリプトをちょこっと書いたことがあるけども、予想通りNIH(車輪の再発明)であった(笑)
PostgreSQL8.3以後で使用できる拡張モジュールでずばりなものがすでにリリースされている。

pg_reorgである。

pg_hint_planと同じくNTT OSSセンタがかかわっているプロダクツらしく、資料を日本語で容易に入手できるし、大規模運用を行っている場合は採用を検討する価値が高いだろう。

pg_reorgの特徴は「ロックを獲得しないで、Cluster処理を実現し、結果としてテーブルサイズ・インデックスの不要領域の回収&ファイル断片化の解消」ができる、というもの。
Reindexではインデックスの再構成だけだが、Clusterであればテーブル自体も再編成できる。
構造としては、メンテ対象のテーブルのコピーを別スキーマに作成し、そのコピーテーブルを再編成してからシステムカタログの直接書き換えで元のテーブルと入替を瞬時にしてしまう、という作りである。
別名でCONCURRENTLYオプションでインデックスを作成するのとコンセプトとしてはおんなじである。

ともかくウチのプロダクトにも適用できないか、DB運用担当と話をしてこなくては。。

この手の大規模運用のために役立つ拡張モジュールとしては
無停止クラスタ/Vaccum Full処理: pg_reorg
統計情報の固定化:pg_dbms_stats
最終兵器hint句適用:pg_hint_plan
が挙げられる。

この活用事例としては『NTT DATA と PostgreSQL が挑んだ総力戦』がSlide Shareにて公表されているので、こちらも参照したい。
またpg_reorgの活用についてはLet's Postgresにも記事がある。
ref:[PostgreSQL導入に向けての取り組み ~大規模システムへの適用を目指して~(5)]

|

« Informixでロックしているデータを読み取る | トップページ | 特定の文字以外を含む行の抽出 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/2022/61268522

この記事へのトラックバック一覧です: PostgreSQLの無停止メンテナンスツール:

« Informixでロックしているデータを読み取る | トップページ | 特定の文字以外を含む行の抽出 »