SQLite Vacuum
El comando VACUUM copia el contenido de la base de datos principal en un archivo de base de datos temporal, luego vacía la base de datos principal y vuelve a cargar el archivo de base de datos original desde la copia. Esto elimina las páginas libres, organiza los datos de las tablas de forma contigua y además limpia la estructura del archivo de la base de datos.
Si la tabla no tiene una clave primaria entera explícita (INTEGER PRIMARY KEY), el comando VACUUM puede cambiar el ID de fila (ROWID) de las entradas de la tabla. El comando VACUUM solo se aplica a la base de datos principal; no es posible usar el comando VACUUM en archivos de base de datos adjuntos.
Si hay una transacción activa, el comando VACUUM fallará. El comando VACUUM es una operación nula (no-op) para las bases de datos en memoria. Dado que el comando VACUUM recrea el archivo de base de datos desde cero, VACUUM también se puede utilizar para modificar muchos parámetros de configuración específicos de la base de datos.
VACUUM manual
A continuación se muestra la sintaxis para emitir el comando VACUUM sobre toda la base de datos en el símbolo del sistema:
$sqlite3 database_name "VACUUM;"
También puede ejecutar VACUUM en el prompt de SQLite, como se muestra a continuación:
sqlite> VACUUM;
También puede ejecutar VACUUM en una tabla específica, como se muestra a continuación:
sqlite> VACUUM table_name;
VACUUM automático (Auto-VACUUM)
El Auto-VACUUM de SQLite no es muy diferente de VACUUM; simplemente mueve las páginas libres al final de la base de datos, reduciendo así el tamaño de la base de datos. Al hacerlo, puede fragmentar notablemente la base de datos, mientras que VACUUM la desfragmenta. Por lo tanto, Auto-VACUUM solo hace que la base de datos sea más pequeña.
En el prompt de SQLite, puede habilitar/deshabilitar el Auto-VACUUM de SQLite mediante la siguiente compilación y ejecución:
sqlite> PRAGMA auto_vacuum = NONE; -- 0 means disable auto vacuum sqlite> PRAGMA auto_vacuum = INCREMENTAL; -- 1 means enable incremental vacuum sqlite> PRAGMA auto_vacuum = FULL; -- 2 means enable full auto vacuum
Puede ejecutar el siguiente comando desde el símbolo del sistema para comprobar la configuración de auto-vacuum:
$sqlite3 database_name "PRAGMA auto_vacuum;"Otras extensiones