Mantenimiento de la base de datos SQLite

SQLiteSQLiteBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo mantener su base de datos SQLite para un rendimiento óptimo. Cubriremos técnicas esenciales como el uso del comando VACUUM para reclamar espacio, la reconstrucción de índices para acelerar las consultas y el análisis de las estadísticas de las tablas para ayudar a SQLite a tomar mejores decisiones. ¡Empecemos!


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sqlite(("SQLite")) -.-> sqlite/SQLiteGroup(["SQLite"]) sqlite/SQLiteGroup -.-> sqlite/make_table("Create New Table") sqlite/SQLiteGroup -.-> sqlite/add_rows("Insert Multiple Rows") sqlite/SQLiteGroup -.-> sqlite/drop_row("Delete Single Row") sqlite/SQLiteGroup -.-> sqlite/build_index("Create Single Index") sqlite/SQLiteGroup -.-> sqlite/clear_index("Drop Single Index") sqlite/SQLiteGroup -.-> sqlite/verify_table("Check Table Existence") subgraph Lab Skills sqlite/make_table -.-> lab-552549{{"Mantenimiento de la base de datos SQLite"}} sqlite/add_rows -.-> lab-552549{{"Mantenimiento de la base de datos SQLite"}} sqlite/drop_row -.-> lab-552549{{"Mantenimiento de la base de datos SQLite"}} sqlite/build_index -.-> lab-552549{{"Mantenimiento de la base de datos SQLite"}} sqlite/clear_index -.-> lab-552549{{"Mantenimiento de la base de datos SQLite"}} sqlite/verify_table -.-> lab-552549{{"Mantenimiento de la base de datos SQLite"}} end

Crear una base de datos y una tabla de ejemplo

Antes de sumergirnos en el mantenimiento, creemos una base de datos SQLite y una tabla de ejemplo con algunos datos. Esto nos dará algo con lo que trabajar.

Primero, abra su terminal en la VM (máquina virtual) de LabEx. Su ruta predeterminada es /home/labex/project.

Para crear una base de datos SQLite llamada mydb.db, ejecute el siguiente comando:

sqlite3 mydb.db

Este comando creará el archivo de la base de datos (si no existe) y abrirá la herramienta de línea de comandos de SQLite, conectándolo a la base de datos. Verá el indicador sqlite>.

Ahora, creemos una tabla llamada users para almacenar información del usuario. Ejecute el siguiente comando SQL:

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

Este comando crea una tabla con tres columnas: id (un entero que identifica de forma única a cada usuario), name (el nombre del usuario) y email (la dirección de correo electrónico del usuario). La restricción PRIMARY KEY asegura que cada id sea único.

A continuación, insertemos algunos datos de ejemplo en la tabla users:

INSERT INTO users (name, email) VALUES ('Alice', '[email protected]');
INSERT INTO users (name, email) VALUES ('Bob', '[email protected]');
INSERT INTO users (name, email) VALUES ('Charlie', '[email protected]');

Estos comandos agregan tres filas a la tabla users.

Para verificar que la tabla y los datos se hayan creado correctamente, ejecute el siguiente comando:

SELECT * FROM users;

Resultado esperado:

1|Alice|[email protected]
2|Bob|[email protected]
3|Charlie|[email protected]

Esta salida muestra el contenido de la tabla users.

Simular la eliminación de datos

Para demostrar el efecto de VACUUM, necesitamos simular la eliminación de datos, lo que puede provocar la fragmentación en el archivo de la base de datos.

Eliminemos una fila de la tabla users:

DELETE FROM users WHERE id = 2;

Este comando elimina la fila donde el id es 2 (el registro de Bob).

Para confirmar la eliminación, ejecute el siguiente comando:

SELECT * FROM users;

Resultado esperado:

1|Alice|[email protected]
3|Charlie|[email protected]

Notará que el registro de Bob ya no está en la tabla. Esta eliminación deja un hueco en el archivo de la base de datos, que VACUUM puede ayudar a solucionar.

Ejecutar VACUUM para recuperar espacio

Ahora, usemos el comando VACUUM para desfragmentar el archivo de la base de datos y recuperar el espacio dejado por el registro eliminado.

Ejecute el siguiente comando dentro del shell de SQLite:

VACUUM;

Este comando reescribe todo el archivo de la base de datos, consolidando los datos y eliminando el espacio vacío.

No verá ninguna salida específica después de ejecutar VACUUM, pero está trabajando en segundo plano para optimizar su base de datos.

Para salir del shell de SQLite, ejecute:

.exit

Ahora está de vuelta en su terminal.

Crear un índice (Index)

Los índices (indexes) son cruciales para acelerar las consultas (queries). Creemos un índice en la columna email de la tabla users.

Primero, conéctese a la base de datos SQLite nuevamente:

sqlite3 mydb.db

Ahora, cree el índice usando el siguiente comando:

CREATE INDEX idx_users_email ON users (email);

Este comando crea un índice llamado idx_users_email en la columna email. SQLite usará este índice para encontrar rápidamente usuarios basándose en su dirección de correo electrónico.

Reconstruir el índice (Index)

Con el tiempo, los índices (indexes) pueden fragmentarse, especialmente después de muchas modificaciones de datos. Reconstruir el índice puede mejorar su eficiencia.

Para reconstruir el índice que acabamos de crear, use el comando REINDEX:

REINDEX idx_users_email;

Este comando reconstruye el índice idx_users_email, asegurando que esté optimizado para los datos actuales.

Para salir del shell de SQLite, ejecute:

.exit

Ahora está de vuelta en su terminal.

Analizar las estadísticas de la tabla (Table Statistics)

SQLite utiliza estadísticas sobre sus datos para optimizar las consultas (queries). Es una buena práctica actualizar estas estadísticas periódicamente.

Primero, conéctese a la base de datos SQLite nuevamente:

sqlite3 mydb.db

Para analizar la tabla users, ejecute el siguiente comando:

ANALYZE users;

Este comando recopila estadísticas sobre la tabla users, que el optimizador de consultas (query optimizer) puede usar para mejorar el rendimiento de las consultas.

Finalmente, salga del shell de SQLite:

.exit

Ahora está de vuelta en su terminal.

Resumen

En este laboratorio, ha aprendido cómo realizar tareas de mantenimiento esenciales en su base de datos SQLite. Utilizó el comando VACUUM para reclamar espacio, creó y reconstruyó un índice (index) para mejorar el rendimiento de las consultas (queries), y analizó las estadísticas de la tabla (table statistics) para ayudar a SQLite a optimizar las consultas. Estas técnicas son cruciales para mantener su base de datos funcionando sin problemas y de manera eficiente.