-
A descrição do que o comando faz está correta. O problema é que o COMANDO VACUUM precisa de parâmetros que estão suprimidos na questão. O mais engraçado é que, salvo engano, que somente o comando vacuum, sem parametros, já diminuiria o tamanho da tabela, o que de certa forma deixaria a questão correta.
-
Alguém sabe o motivo do erro?
Segundo o manual do Postgres:
"O comando VACUUM recupera a área de armazenamento ocupada pelas tuplas excluídas. Na operação normal do PostgreSQL as tuplas excluídas, ou tornadas obsoletas por causa de uma atualização, não são fisicamente removidas da tabela; permanecem presentes até o comando VACUUM ser executado. Portanto, é necessário executar o comando VACUUM periodicamente, especialmente em tabelas freqüentemente atualizadas.
Sem nenhum parâmetro, o comando VACUUM processa todas as tabelas do banco de dados corrente. Com um parâmetro, o comando VACUUM processa somente esta tabela."
Fonte: http://pgdocptbr.sourceforge.net/pg82/sql-vacuum.html
-
Pelas pesquisas que realizei, a causa mais provável do erro está em dizer "Usando o comando dessa forma, libera-se espaço para o Sistema operacional", pois o comando que faz a liberação de espaço em disco para o sistema operacional, é o comando VACUUM FULL.
@Juliano, somente o comando VACCUM, não deixaria a questão correta. Pois não liberaria espaço para o Sistema Operacional.
fonte: http://pgdocptbr.sourceforge.net/pg80/maintenance.html
-
Acredito que a única maneira de realizar a eliminação física, seria mediante a formatação do disco. Comandos de deleção de arquivos ou dados de qualquer SO e mesmo de SGDB realizam, a meu ver, eliminação LÓGICA do dado.
-
Errado
No momento em que o comando >VACUUM é executado, é feita uma varredura em todo o banco a procura de registros inúteis, onde estes são fisicamente removidos, agora sim diminuindo o tamanho físico do banco. Mas além de apenas remover os registros, o comando >VACUUM encarrega-se de organizar os registros que não foram deletados, garantindo que não fiquem espaços/lacunas em branco após a remoção dos registros inúteis.
O Vacuum diminui consideravelmente o tamanho físico do banco, mas não só isso, ele também aumenta a performance do otimizador do banco de dados.
http://www.devmedia.com.br/postgresgl-vacuum-limpando-o-banco-de-dados/29716
-
É o que o colega @Luciano falou:
"Plain VACUUM (without FULL) simply reclaims space and makes it available for re-use. (...). However, extra space is not returned to the operating system (in most cases); it's just kept available for re-use within the same table. VACUUM FULL rewrites the entire contents of the table into a new disk file with no extra space, allowing unused space to be returned to the operating system. "
.
https://www.postgresql.org/docs/9.1/sql-vacuum.html