Відповідно до коментарів у джерелі , truncate
створює новий, порожній файл зберігання та видаляє старий файл зберігання під час фіксації. (Документи припускають, що "файл зберігання" - це лише файл, що стосується ОС, але я, можливо, не розумію термінологію.)
Створіть новий порожній файл зберігання для відношення та призначте його як значення relfilenode. Старий файл зберігання заплановано на видалення під час фіксації.
Оскільки, здається, видаляється файл, я можу уявити деякі випадки, коли базова операційна система може не одразу звільнити цей простір. Я думаю, що в деяких випадках файл зберігання може потрапити, наприклад, у коробку для переробки під Windows. Але в моєму випадку обрізання таблиці під PostgreSQL 9. щось щось негайно збільшило вільну область під Windows.
Відсікання записується також у журнал WAL. Я не знаю, який ефект це може мати.