2010-03-30 10 views
14

Ho un database SQLite.Perché la cancellazione di un database SQLite non riduce le sue dimensioni?

Ho creato le tabelle e le ho riempite con una notevole quantità di dati.

Quindi ho cancellato il database eliminando e ricreando le tabelle. Ho confermato che tutti i dati erano stati rimossi e le tabelle erano vuote osservandole con SQLite Administrator.

Il problema è che la dimensione del file di database (* .db3) è rimasta la stessa dopo che era stata cancellata.

Questo ovviamente non è desiderabile in quanto vorrei recuperare lo spazio occupato dai dati una volta che l'ho cancellato.

Qualcuno ha fatto un'osservazione simile e/o sa cosa sta succedendo?

Cosa si può fare al riguardo?

+1

'transazione finale; vuoto; ' – PHPst

risposta

24

Da here:

Quando un oggetto (tabella, indice, trigger e viste) viene eliminato dal database, si lascia alle spalle lo 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 di 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.

3

Le dimensioni dei database funzionano come contrassegni di acqua, ad es. se l'acqua sale del marchio di acqua aumenta, quando l'acqua receeds il marchio di acqua rimane dove è stato

Si dovrebbe guardare in banche dati contrazione

Problemi correlati