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;"