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

Vacuum en SQLite

El comando VACIADO copia el contenido del archivo de base de datos principal a un archivo de base de datos temporal, luego vacía la base de datos principal y recarga el archivo de base de datos original desde el duplicado. Esto elimina las páginas libres, alinea los datos de la tabla en secuencia continua y además limpia la estructura del archivo de base de datos.

Si en la tabla no hay una clave principal entera explícita (INTEGER PRIMARY KEY), el comando VACIADO puede cambiar el ID de la entrada de la tabla (ROWID). El comando VACIADO solo se aplica a la base de datos principal, los archivos de bases de datos adicionales no pueden usar el comando VACIADO.

Si hay una transacción activa, el comando VACIADO fallará. El comando VACIADO es cualquier operación para una base de datos en memoria. Ya que el comando VACIADO vuelve a crear el archivo de base de datos desde cero, VACIADO también se puede usar para modificar muchos parámetros de configuración específicos de la base de datos.

Vaciamiento manual

La sintaxis simple para emitir el comando VACIADO para toda la base de datos desde el símbolo del sistema es-

$sqlite3 nombre_de_base_de_datos "VACIADO;"

Puede ejecutar VACIADO desde el símbolo del sistema de SQLite, como se muestra a continuación-

sqlite> VACIADO;

También puede ejecutar VACIADO en una tabla específica, como se muestra a continuación-

sqlite> VACIADO nombre_de_tabla;

Vaciamiento automático (Auto-VACIADO)

Auto de SQLite-VACIADO es bastante diferente de VACIADO, ya que solo mueve las páginas libres al final de la base de datos, reduciendo el tamaño de la base de datos. Al hacerlo, puede fragmentar significativamente la base de datos, mientras que VACIADO es desfragmentar. Por lo tanto, Auto-VACIADO solo haría que la base de datos sea más pequeña.

En el símbolo del sistema de SQLite, puede habilitar a través de la siguiente compilación y ejecución/Deshabilitar el Auto de SQLite-VACIADO:

sqlite> PRAGMA vaciamiento_automático = NINGUNO; -- 0 significa deshabilitar la vaciamiento automático
sqlite> PRAGMA auto_vacuum = FULL; -- 1 lo que significa habilitar el vaciado automático completo
sqlite> PRAGMA auto_vacuum = INCREMENTAL; -- 2 lo que significa habilitar el vaciado incremental

Puede ejecutar los siguientes comandos en el símbolo del sistema para verificar la configuración de Vacuum-

$sqlite3 database_name "PRAGMA auto_vacuum;"