Quote:
Originariamente inviato da Magnum2000
[b]
Senti, so che la domanda che ti farò è un pò invasiva...
...però, se non ci si aiuta tra di noi..
Mi piacerebbe capire il meccanismo di compattazione; mi puoi aiutare? (non è da molto che utilizzo VB)
|
La compattazione serve per recuperare lo spazio perso quando per esempio cancelli un record. Per motivi di performances, Jet non recupera quello spazio, in quanto tale operazione richiederebbe uno spostamento a volte ingente di dati.
Sempre per motivi di performances, viene creato in coda ad ogni tabella uno spazio vuoto maggiore di quello necessario per inserire un record. Questo blocco di byte verrà via via riempito di record, poi quando questo sarà pieno verrà creato un nuovo blocco e via dicendo. Anche in questo caso, l'operazione di inserimento di un nuovo blocco comporta rallentamenti generali al database, ma tale operazione viene eseguita una volta "ogni tanto" e quindi generalmente l'archivio continua ad essere veloce.
Compattando l'archivio (in realtà, con le ultime versioni del Jet, le operazioni CompactDatabase e RepairDatabase sono la stessa cosa) si va a recuperare tutto lo spazio inutile nelle varie tabelle.
Naturalmente, appena si andrà ad aggiungere un nuovo record, Jet inserirà di nuovo un blocco in coda alla tabella, vanificando in parte la compattazione appena svolta.