SQLite - VACUUM
O comando VACUUM limpa o banco de dados principal, copiando seu conteúdo em um arquivo de banco de dados temporário e recarregando o arquivo de banco de dados original da cópia. Isso elimina páginas livres, alinha os dados da tabela para serem contíguos e, de outra forma, limpa a estrutura do arquivo de banco de dados.
O comando VACUUM pode alterar o ROWID das entradas nas tabelas que não possuem uma INTEGER PRIMARY KEY explícita. O comando VACUUM funciona apenas no banco de dados principal. Não é possível VACUUM um arquivo de banco de dados anexado.
O comando VACUUM falhará se houver uma transação ativa. O comando VACUUM é autônomo para bancos de dados na memória. Como o comando VACUUM reconstrói o arquivo de banco de dados do zero, o VACUUM também pode ser usado para modificar muitos parâmetros de configuração específicos do banco de dados.
VÁCUO manual
A seguir está uma sintaxe simples para emitir um comando VACUUM para todo o banco de dados a partir do prompt de comando -
$sqlite3 database_name "VACUUM;"
Você pode executar o VACUUM no prompt do SQLite, assim como a seguir -
sqlite> VACUUM;
Você também pode executar o VACUUM em uma tabela específica da seguinte maneira -
sqlite> VACUUM table_name;
Auto-VACCUM
SQLite Auto-VACUUM não faz o mesmo que VACUUM, em vez disso, apenas move as páginas livres para o final do banco de dados, reduzindo assim o tamanho do banco de dados. Ao fazer isso, ele pode fragmentar significativamente o banco de dados, enquanto o VACUUM garante a desfragmentação. Portanto, o Auto-VACUUM apenas mantém o banco de dados pequeno.
Você pode habilitar / desabilitar a aspiração automática do SQLite pelos seguintes pragmas executados no prompt do SQLite -
sqlite> PRAGMA auto_vacuum = NONE; -- 0 means disable auto vacuum
sqlite> PRAGMA auto_vacuum = FULL; -- 1 means enable full auto vacuum
sqlite> PRAGMA auto_vacuum = INCREMENTAL; -- 2 means enable incremental vacuum
Você pode executar o seguinte comando no prompt de comando para verificar a configuração de vácuo automático -
$sqlite3 database_name "PRAGMA auto_vacuum;"