このプロジェクトでは pg_repack と pg_batch の2つのツールを頒布しています。
pg_repack は PostgreSQL のテーブルを再編成するシェルコマンドです。 共有ロックや排他ロックを取得しないため、再編成中であっても行の参照や更新を行うことができます。 このモジュールは CLUSTER や VACUUM FULL コマンドのより良い代替になります。
pg_batch は PostgreSQL のためのSQLジョブ実行プログラムです。 ジョブ一覧生成するスクリプトを SQL として外部から与え、その出力 SQL をジョブとしてシリアルまたはパラレルに実行します。 VACUUM を行うスクリプトが付属しており、"より良い vacuumdb" として利用できます。
この pg_repack プロジェクトは PostgreSQL コミュニティによる pgFoundry の中のプロジェクトです。
pg_repack とclusterdb の比較に示します。 断片化のないソートされた状態 (not fragmented) では clusterdb のほうが高速ですが、完全に断片化した状態 (fully fragmented) では pg_repack が大幅に高速です。 一般的に、再編成は断片化が進行した状態で実施されることを考えると、pg_repack は clusterdb よりも実行時間が短いと言えます。
大項目 | 小項目 | 環境 |
---|---|---|
ハードウェア | CPU | 2 × Xeon 5160 3.00GHz (Dual core) |
メモリ | 2GB | |
ストレージ | Ultra320 SCSI, 15000rpm (220GB) | |
ソフトウェア | OS | RHEL 5.2 (64bit) 2.6.18-92.el5 |
DB | PostgreSQL 8.3.3 | |
pg_repack | 1.0.0 | |
clusterdb | clusterdb (PostgreSQL) 8.3.3 | |
データ | スキーマ |
|
件数 | 1650万件 (約2GB) |