cambia la dimensione del file sqlite dopo “DELETE FROM table”

Sto lavorando con il file sqlite3.

Innanzitutto, ho inserito un database relativamente grande, la dimensione del file era di circa 100 MB.

Di quanto ho fatto

$db->exec("DELETE FROM table"); 

e inserito solo una piccola parte di quel database. Ma la dimensione del file è rimasta a 100 mb.

Cosa dovresti fare per cambiare la dimensione del file sqlite quando lo elimini?

Il comando che stai cercando è vuoto . C’è anche un pragma per triggersre l’auto-aspirazione.

Dalla documentazione:

Quando un object (tabella, indice, trigger o vista) viene rilasciato dal database, lascia uno spazio vuoto. Questo spazio vuoto verrà riutilizzato la prossima volta che verranno aggiunte nuove informazioni al database. Ma nel frattempo, il file di database potrebbe essere più grande del necessario. Inoltre, inserimenti frequenti, aggiornamenti ed eliminazioni possono causare la frammentazione delle informazioni nel database, che si sovrappongono in tutto il file del database anziché raggruppate in un unico punto.

Il comando VACUUM pulisce il database principale copiandone il contenuto in un file di database temporaneo e ricaricando il file del database originale dalla copia. Ciò elimina le pagine libere, allinea i dati della tabella ad essere contigui e, in caso contrario, ripulisce la struttura dei file del database.

Puoi farlo

 $db->exec("DELETE FROM table"); $db->exec("vacuum"); 

e la dimensione del file verrà modificata.

Pulizia dei database SQLite ha due comandi progettati per la pulizia reindex e vuoto. reindex è usato per ribuild gli indici. Ha due forms: reindex nome_collazione; reindice nome_tabella | nome_indice;