Manutenção de Banco de Dados SQLite

SQLiteBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como manter seu banco de dados SQLite para um desempenho ideal. Abordaremos técnicas essenciais como o uso do comando VACUUM para recuperar espaço, a reconstrução de índices para acelerar as consultas e a análise das estatísticas da tabela para ajudar o SQLite a tomar decisões melhores. Vamos começar!

Criar um Banco de Dados e Tabela de Exemplo

Antes de mergulharmos na manutenção, vamos criar um banco de dados SQLite e uma tabela de amostra com alguns dados. Isso nos dará algo com que trabalhar.

Primeiro, abra seu terminal na VM do LabEx. Seu caminho padrão é /home/labex/project.

Para criar um banco de dados SQLite chamado mydb.db, execute o seguinte comando:

sqlite3 mydb.db

Este comando criará o arquivo do banco de dados (se ele não existir) e abrirá a ferramenta de linha de comando do SQLite, conectando você ao banco de dados. Você verá o prompt sqlite>.

Agora, vamos criar uma tabela chamada users para armazenar informações do usuário. Execute o seguinte comando SQL:

CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT);

Este comando cria uma tabela com três colunas: id (um inteiro que identifica exclusivamente cada usuário), name (o nome do usuário) e email (o endereço de e-mail do usuário). A restrição PRIMARY KEY garante que cada id seja único.

Em seguida, vamos inserir alguns dados de amostra na tabela users:

INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');
INSERT INTO users (name, email) VALUES ('Charlie', 'charlie@example.com');

Esses comandos adicionam três linhas à tabela users.

Para verificar se a tabela e os dados foram criados com sucesso, execute o seguinte comando:

SELECT * FROM users;

Saída Esperada:

1|Alice|alice@example.com
2|Bob|bob@example.com
3|Charlie|charlie@example.com

Esta saída mostra o conteúdo da tabela users.

Simular a Exclusão de Dados

Para demonstrar o efeito do VACUUM, precisamos simular a exclusão de dados, o que pode levar à fragmentação no arquivo do banco de dados.

Vamos excluir uma linha da tabela users:

DELETE FROM users WHERE id = 2;

Este comando remove a linha onde o id é 2 (o registro de Bob).

Para confirmar a exclusão, execute o seguinte comando:

SELECT * FROM users;

Saída Esperada:

1|Alice|alice@example.com
3|Charlie|charlie@example.com

Você notará que o registro de Bob não está mais na tabela. Essa exclusão deixa uma lacuna no arquivo do banco de dados, que o VACUUM pode ajudar a resolver.

Executar VACUUM para Reivindicar Espaço

Agora, vamos usar o comando VACUUM para desfragmentar o arquivo do banco de dados e recuperar o espaço deixado pelo registro excluído.

Execute o seguinte comando dentro do shell SQLite:

VACUUM;

Este comando reescreve todo o arquivo do banco de dados, consolidando os dados e removendo o espaço vazio.

Você não verá nenhuma saída específica após executar VACUUM, mas ele está trabalhando em segundo plano para otimizar seu banco de dados.

Para sair do shell SQLite, execute:

.exit

Você agora está de volta ao seu terminal.

Criar um Índice

Índices são cruciais para acelerar as consultas. Vamos criar um índice na coluna email da tabela users.

Primeiro, conecte-se ao banco de dados SQLite novamente:

sqlite3 mydb.db

Agora, crie o índice usando o seguinte comando:

CREATE INDEX idx_users_email ON users (email);

Este comando cria um índice chamado idx_users_email na coluna email. O SQLite usará este índice para encontrar rapidamente usuários com base em seus endereços de e-mail.

Reconstruir o Índice

Com o tempo, os índices podem se tornar fragmentados, especialmente após muitas modificações de dados. Reconstruir o índice pode melhorar sua eficiência.

Para reconstruir o índice que acabamos de criar, use o comando REINDEX:

REINDEX idx_users_email;

Este comando reconstrói o índice idx_users_email, garantindo que ele esteja otimizado para os dados atuais.

Para sair do shell SQLite, execute:

.exit

Você agora está de volta ao seu terminal.

Analisar Estatísticas da Tabela

O SQLite usa estatísticas sobre seus dados para otimizar as consultas. É uma boa prática atualizar essas estatísticas periodicamente.

Primeiro, conecte-se ao banco de dados SQLite novamente:

sqlite3 mydb.db

Para analisar a tabela users, execute o seguinte comando:

ANALYZE users;

Este comando coleta estatísticas sobre a tabela users, que o otimizador de consultas pode usar para melhorar o desempenho das consultas.

Finalmente, saia do shell SQLite:

.exit

Você agora está de volta ao seu terminal.

Resumo

Neste laboratório, você aprendeu como realizar tarefas essenciais de manutenção em seu banco de dados SQLite. Você usou o comando VACUUM para recuperar espaço, criou e reconstruiu um índice para melhorar o desempenho das consultas e analisou as estatísticas da tabela para ajudar o SQLite a otimizar as consultas. Essas técnicas são cruciais para manter seu banco de dados funcionando de forma suave e eficiente.