pg_reorg ホームページへようこそ


pg_reorg は PostgreSQL のテーブルを再編成するシェルコマンドです。 共有ロックや排他ロックを取得しないため、再編成中であっても行の参照や更新を行うことができます。 このモジュールは CLUSTER や VACUUM FULL コマンドのより良い代替になります。

Here is an English page.

ドキュメント

実行時間

pg_reorgの実行時間について検証結果を以下のグラフに示します。同じレコード数のテーブルに対して、断片化が発生していない場合と、断片化が発生して容量が2倍程度に肥大化している場合について複数回計測を行い、実行時間の平均値をグラフにしています。

測定環境
大項目 小項目 環境
ハードウェア CPU Xeon E5645 2.4GHz (12 core) * 2
メモリ 32GB
HDD SAS 10,000rpm 2TB * 4
ソフトウェア OS RHEL 6.2 (64bit)
DB PostgreSQL 9.3.4
pg_reorg 1.1.10
データ スキーマ
CREATE TABLE test (
 id bigserial,
 rndkey bigint NOT NULL,
 dummy1 bigint NOT NULL,
 dummy2 bigint NOT NULL,
 dummy3 bigint NOT NULL,
 dummy4 bigint NOT NULL,
 dummy5 bigint NOT NULL,
 dummy6 bigint NOT NULL,
 dummy7 bigint NOT NULL,
 dummy8 timestamp NOT NULL,
 dummy9 timestamp NOT NULL,
 dummy10 timestamp NOT NULL,
 dummy11 timestamp NOT NULL,
 dummy12 timestamp NOT NULL,
 dummy13 timestamp NOT NULL,
 dummy14 timestamp NOT NULL,
 filler char(128) NOT NULL
);

CREATE INDEX test_idx_rndkey ON test (rndkey);
ALTER TABLE test CLUSTER ON test_idx_rndkey;