pg_repack は PostgreSQL のテーブルをオンラインで再編成できるツールです。本記事では pg_repackについて紹介します。 良く知られている通り、PostgreSQL は追記型アーキテクチャを採用しています。UPDATE や DELETE をしても旧データを格納した行はしばらく物理ファイル上に残り、これを VACUUM コマンドや自動 VACUUM で整理して、その領域を再利用可能にする仕組みとなっています。何らかの理由でこれらの手動・自動の VACUUM 処理が実行されなかった場合には、データ格納に使われない不要領域が増加し、性能劣化の原因となります。そのような場合には、CLUSTER コマンドや VACUUM FULL コマンドを使って、テーブルの再編成をするのですが、これらのコマンドは強いロックを取得するため、サービス中の適用が難しいという課題がありました。 p
![pg_repack (オンラインテーブル再編成ツール)](https://cdn-ak-scissors.b.st-hatena.com/image/square/eec367294d5196172f8c7b00343062c447ef5969/height=288;version=1;width=512/https%3A%2F%2Fwww.sraoss.co.jp%2Ftech-blog%2Fwp-content%2Fuploads%2F2018%2F12%2F532a869c6e4d5b69a4d0fe9e034a3437.jpg)