Основные отличия между командами VACUUM и VACUUM FULL в PostgreSQL:
- VACUUM только высвобождает пространство и делает его доступным для повторного использования. 1 Эта форма команды может работать параллельно с обычными операциями чтения и записи таблицы, так как не требует исключительной блокировки. 1 Однако освобождённое место не возвращается операционной системе (в большинстве случаев). 1
- VACUUM FULL переписывает всё содержимое таблицы в новый файл на диске, не содержащий ничего лишнего, что позволяет возвратить неиспользованное пространство операционной системе. 1 Эта форма команды работает намного медленнее и запрашивает блокировку в режиме ACCESS EXCLUSIVE для каждой обрабатываемой таблицы. 1
Таким образом, VACUUM — более лёгкая и быстрая операция, отмечающая пространство как доступное для повторного использования, в то время как VACUUM FULL физически перестраивает данные и сжимает хранилище, обеспечивая более тщательную очистку. 3