English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Vacuum no SQLite

O comando LIMPEZA copia o conteúdo do banco de dados principal para um arquivo de banco de dados temporário, esvazia o banco de dados principal e recarrega o arquivo do banco de dados original a partir do backup. Isso remove as páginas vazias, organiza os dados da tabela em sequência contínua e também limpa a estrutura do arquivo do banco de dados.

Se a tabela não tiver uma chave primária explícita de tipo inteiro (INTEGER PRIMARY KEY), o comando LIMPEZA pode alterar o ID da linha (ROWID) das entradas da tabela. O comando LIMPEZA é aplicável apenas ao banco de dados principal, é impossível usar o comando LIMPEZA em arquivos de banco de dados adicionais.

Se houver uma transação ativa, o comando LIMPEZA falhará. O comando LIMPEZA é qualquer operação em um banco de dados em memória. Como o comando LIMPEZA recria o arquivo do banco de dados do zero, ele também pode ser usado para modificar muitos parâmetros específicos do banco de dados.

Limpagem manual

A seguinte é uma sintaxe simples para emitir o comando LIMPEZA para todo o banco de dados a partir da linha de comando-

$sqlite3 nome_do_banco_de_dados "LIMPEZA;"

Você pode executar a LIMPEZA no prompt do SQLite, conforme mostrado a seguir-

sqlite> LIMPEZA;

Você também pode executar a LIMPEZA em uma tabela específica, conforme mostrado a seguir-

sqlite> LIMPEZA nome_da_tabela;

Limpagem automática de vácuo (Auto-LIMPEZA)

limpeza automática do SQLite-A LIMPEZA é bastante diferente da LIMPEZA, pois apenas move as páginas vazias para o final do banco de dados,减小 o tamanho do banco de dados. Ao fazer isso, ela pode fragmentar significativamente o banco de dados, enquanto a LIMPEZA é defragmentação. Portanto, Auto-A LIMPEZA apenas tornará o banco de dados menor.

No prompt do SQLite, você pode ativar através da compilação e execução das seguintes instruções/Desativar a limpeza automática do SQLite-LIMPEZA:

sqlite> PRAGMA limpeza_automática = NENHUM; -- 0 significa desativar a limpeza automática de vácuo
sqlite> PRAGMA auto_vacuum = FULL; -- 1 significa ativar vacuum completo automático
sqlite> PRAGMA auto_vacuum = INCREMENTAL; -- 2 significa ativar vacuum incremental

Você pode executar os seguintes comandos no prompt de comando para verificar as configurações de Vacuum-

$sqlite3 nome_do_banco_de_dados "PRAGMA auto_vacuum;"