はい、PostgreSQLは、特定のサイズを超えると自動的にこれを行います。ただし、圧縮は個々のデータ値ごとに適用されますが、テーブル全体のレベルでは適用されません。つまり、非常に狭い10億行がある場合、それらは圧縮されません。または、それぞれに小さな値しかない列が非常に多い場合、それらは圧縮されません。このスキームの詳細はマニュアルに記載されています。
フルテーブルレベルで必要な場合の解決策は、圧縮するテーブルのTABLESPACEを作成し、それを圧縮ファイルシステムにポイントすることです。ファイルシステムがfsync()と標準のPOSIXセマンティクスに準拠している限り、これは完全に安全です。これについての詳細はマニュアルにあります。