2010-01-24 9 views

risposta

28

I database che utilizzano MVCC per isolare le transazioni l'uno dall'altro richiedono periodicamente la scansione delle tabelle per eliminare le copie obsolete delle righe. In MVCC, quando una riga viene aggiornata o eliminata, non può essere immediatamente riciclata perché potrebbero esserci transazioni attive che possono ancora vedere la vecchia versione della riga. Invece di verificare se questo è il caso, che potrebbe essere piuttosto costoso, si presume che le vecchie righe rimangano rilevanti. Il processo di recupero dello spazio viene posticipato fino all'aspirazione della tabella che, a seconda del database, può essere avviata automaticamente o esplicitamente.

0

È molto simile alla deframmentazione di un filesystem. Maggiori informazioni su PGSQL docs.

+2

La deframmentazione non riguarda lo spazio di recupero. Si tratta di riordinare i dati al fine di ridurre la frammentazione. –

1

'vacuumdb' è in MySQL, sqlite e PostgreSQL. In Postgres, vacuumdb identifica lo spazio occupato da righe eliminate e lo cataloga per uso futuro. 'vuoto pieno' esegue un esame più completo e sposta i record nello spazio appena creato.

Problemi correlati