Según los comentarios en la fuente , truncate
crea un nuevo archivo de almacenamiento vacío y elimina el archivo de almacenamiento anterior en el momento de la confirmación. (Los documentos sugieren que "archivo de almacenamiento" es solo un archivo en lo que respecta al sistema operativo, pero podría estar malinterpretando la terminología).
Cree un nuevo archivo de almacenamiento vacío para la relación y asígnelo como el valor de relfilenode. El antiguo archivo de almacenamiento está programado para su eliminación en la confirmación.
Como parece estar eliminando un archivo, puedo imaginar algunos casos en los que el sistema operativo subyacente podría no liberar ese espacio de inmediato. Me imagino que, en algunos casos, el archivo de almacenamiento podría terminar en la Papelera de reciclaje en Windows, por ejemplo. Pero en mi caso, truncar una tabla en PostgreSQL 9. algo aumentó inmediatamente el espacio libre en Windows.
El truncamiento también se registra en el registro WAL. No sé cuánto efecto podría tener eso.