Ja, PostgreSQL erledigt dies automatisch für Sie, wenn sie eine bestimmte Größe überschreiten. Die Komprimierung wird jedoch auf jeden einzelnen Datenwert angewendet – nicht auf der vollständigen Tabellenebene. Das heißt, wenn Sie eine Milliarde Zeilen haben, die sehr schmal sind, werden sie nicht komprimiert. Oder wenn Sie sehr viele Spalten mit jeweils nur einem kleinen Wert darin haben, werden sie nicht komprimiert. Details zu diesem Schema im Handbuch.
Wenn Sie es auf der Ebene der vollständigen Tabelle benötigen, besteht eine Lösung darin, einen TABLESPACE für die Tabellen zu erstellen, die Sie komprimieren möchten, und ihn auf ein komprimiertes Dateisystem zu verweisen. Solange das Dateisystem noch fsync() und die Standard-POSIX-Semantik befolgt, sollte dies absolut sicher sein. Details dazu im Handbuch.