domanda semplice, ma mi assilla da un po 'di tempo ...
cos'è "overhead" in MySQL e dovrei preoccuparmi?
facendo clic su "ottimizza tabella" lo risolve davvero?
domanda semplice, ma mi assilla da un po 'di tempo ...
cos'è "overhead" in MySQL e dovrei preoccuparmi?
facendo clic su "ottimizza tabella" lo risolve davvero?
Risposte:
Sembra che l'overhead sia uno spazio su disco temporaneo utilizzato dal database per eseguire alcune query, quindi dovresti preoccuparti solo se questo diventa davvero elevato.
È possibile confrontare "Ottimizzazione della tabella" con la deframmentazione del disco rigido.
Quoto:
Ogni database richiederà, nel tempo, una qualche forma di manutenzione per mantenerlo ad un livello prestazionale ottimale . L'eliminazione delle righe cancellate, il resequenziamento, la compressione, la gestione dei percorsi degli indici, la deframmentazione, ecc. È ciò che è noto come OTTIMIZZAZIONE in mysql e altri termini in altri database. Ad esempio, IBM DB2 / 400 lo chiama RIORGANIZZARE MEMBRO FILE FISICO.
È un po 'come cambiare l'olio in macchina o fare una messa a punto. Potresti pensare di non doverlo fare davvero, ma facendo così la tua auto funziona molto meglio, ottieni un miglior chilometraggio del gas, ecc. Un'auto che ottiene un sacco di chilometraggio richiede regolazioni più spesso. Un database che viene utilizzato pesantemente richiede lo stesso. Se stai facendo molte operazioni di AGGIORNAMENTO e / o ELIMINA, e specialmente se le tue tabelle hanno colonne di lunghezza variabile (VARCHAR, TEXT, ecc.), Devi tenerti aggiornato.
Se stai parlando della cosa che phpMyAdmin
chiama overhead
, allora è la dimensione effettiva di un file di dati della tabella rispetto alla dimensione ideale dello stesso file di dati (come se appena ripristinato dal backup).
Per motivi di prestazioni, MySQL
non compatta i file di dati dopo aver eliminato o aggiornato le righe.
Ciò overhead
è negativo per la scansione delle tabelle, ovvero quando la query deve essere eseguita su tutti i valori della tabella, dovrà cercare più spazio vuoto.
Puoi sbarazzartene overhead
eseguendo OPTIMIZE TABLE
che compatterà la tabella e gli indici.
L'overhead è Data_free di una tabella, ovvero il numero di byte allocati ma non utilizzati. Lo possiamo trovare con il comando SQL SHOW TABLE STATUS . È lo spazio libero nelle dimensioni allocate per la tabella.
L'ottimizzazione della tabella può essere molto problematica. Ad esempio se la tabella viene utilizzata pesantemente in un sito.
http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html
Dopo aver eliminato gran parte di una tabella MyISAM o ARCHIVE o aver apportato molte modifiche a una tabella MyISAM o ARCHIVE con righe di lunghezza variabile (tabelle con colonne VARCHAR, VARBINARY, BLOB o TEXT). Le righe eliminate vengono mantenute in un elenco collegato e le successive operazioni INSERT riutilizzano le posizioni delle righe precedenti. <
Credo di aver confermato questo comportamento. E sarebbe sicuramente molto utile.