Quando usi mysql, potresti scoprire che, sebbene una tabella cancelli molti dati, i file dati e gli indici della tabella sono stranamente piccoli. Questo perché mysql lascerà molti buchi nei dati quando si cancellano dati (soprattutto Text e BLOB), che occuperanno lo spazio dei dati originali, quindi la dimensione del file non cambia. Questi fori potrebbero essere riutilizzati in futuro quando verranno inseriti i dati, e naturalmente potrebbero rimanere lì. Questo foro non solo aumenta il costo di archiviazione, ma riduce anche l'efficienza di scansione della tabella a causa della frammentazione dei dati.
Scenari di utilizzo:Se hai eliminato una grande parte della tabella, o se hai apportato molte modifiche a una tabella con righe di lunghezza variabile (una con colonne VARCHAR, BLOB o TEXT), dovresti usare OPTIMIZE TABLE. I record cancellati vengono mantenuti nella lista collegata e le successive operazioni INSERT riutilizzano la vecchia posizione dei record. Puoi usare OPTIMIZE TABLE per riutilizzare lo spazio inutilizzato e organizzare frammenti di file dati. [Quando una grande quantità di dati viene eliminata dalla tua libreria, potresti notare che la dimensione del file dati non è diminuita. Ciò è dovuto alla frammentazione lasciata nel file dati dopo l'operazione di cancellazione.
Nella maggior parte delle impostazioni, non è necessario eseguire affatto OPTIMIZE TABLE. Anche se fai molti aggiornamenti alle righe di lunghezza variabile, non è necessario eseguirle spesso, una volta a settimana o una volta al mese, solo per tabelle specifiche.
OPTIMIZE TABLE funziona solo per le tabelle MyISAM, BDB e InnoDB.
Per le tabelle BDB, la OPTIMIZE TABLE è attualmente mappata alla ANALYZE TABLE. Per le tabelle InnoDB, la OPTIMIZE TABLE viene mappata all'ALTER TABLE, che ricostruisce la tabella. Le operazioni di ricostruzione, aggiornano le statistiche degli indici e liberano spazio inutilizzato negli indici clusterizzati.
Nota: MySQL blocca la tabella durante l'esecuzione OPTIMIZE TABLE.
Per myisam, puoi usare direttamente la tabella di ottimizzazione table.name,Quando si tratta del motore InnoDB, riporterà "Table does not supporte optimize, doing recreate + analyze", e in circostanze normali, se converti da myisam a innodb, userai alter table table.name engine='innodb' per convertire, e puoi anche usarlo per ottimizzazione.Pertanto, quando si tratta del motore InnoDB, possiamo usare alter table table.name engine='innodb' invece di ottimizzare per l'ottimizzazione。
Per visualizzare il prima e dopo effetti, puoi usare il comando show table status, ad esempio mostra lo stato della tabella da [database] come '[table_name]'; La data_free nel risultato di ritorno è lo spazio di stoccaggio occupato dal vuoto.
Lo script shell che implementa MySQL riparazione batch timed e ottimizzazione della tabella di ottimizzazione è il seguente:
Originale:
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
|