2009-02-19 11 views

risposta

134

Sembra che il sovraccarico sia lo spazio su disco temporaneo utilizzato dal database per eseguire alcune query, quindi è necessario preoccuparsi solo se questo diventa veramente elevato.

È possibile confrontare "Ottimizzazione del tavolo" con la deframmentazione del disco rigido.

cito:

Ogni database, nel corso del tempo, richiederà qualche forma di manutenzione per tenerlo a una prestazione di livello ottimale. L'eliminazione delle righe cancellate, la risquinamento, la compressione, la gestione dei percorsi dell'indice , la deframmentazione, ecc. È ciò che è noto come OTTIMIZZAZIONE in mysql e altri termini in altri database. Ad esempio, IBM DB2/400 lo chiama MEMORIZZAZIONE DEL FILE FILE RILEVANTE.

È un po 'come cambiare l'olio in l'auto o ottenere una messa a punto. È possibile che pensi davvero di non doverlo fare, ma con il così facendo la tua macchina funziona molto meglio, ottieni una migliore distanza in miglia del gas, ecc. Un'auto che ottiene molto chilometraggio richiede più spesso le ottimizzazioni . Un database che utilizza pesantemente richiede lo stesso. Se si eseguono molte operazioni UPDATE e/o DELETE e, in particolare, se le tabelle hanno lunghezze variabili colonne (VARCHAR, TEXT, ecc.), È necessario il per essere ottimizzato.

+1

@Jasper Le tabelle sono completamente bloccate (impossibile leggere/scrivere) durante la durata dell'ottimizzazione? – Pacerier

+4

Da dove proviene quella citazione? Sto trovando molti risultati su Google. –

+0

come facciamo a sapere quali sono le cause generali? – mahen3d

75

Se si sta parlando della cosa che phpMyAdmin chiamate overhead, allora è dimensione effettiva di una tabella di file di dati rispetto alle dimensioni ideali dello stesso file di dati (come se quando appena ripristinato dal backup).

Per motivi di prestazioni, MySQL non compatta i file di dati dopo aver eliminato o aggiornato le righe.

Questo overhead non è valido per la scansione della tabella, i. e. quando la tua query deve essere eseguita su tutti i valori della tabella, avrà bisogno di guardare più spazio vuoto.

È possibile liberarsi di overhead eseguendo OPTIMIZE TABLE che comprime la tabella e gli indici.

+6

La dimensione della documentazione di mysql dice "OPTIMIZE TABLE dovrebbe essere usato se hai cancellato una grande parte di una tabella o se hai fatto molte modifiche a una tabella con righe di lunghezza variabile", questo è il mio caso, grazie :) – boclodoa

7

L'overhead è Data_free di una tabella, ovvero Il numero di byte allocati ma non utilizzati. Possiamo trovarlo tramite il comando SQL STATUS TABELLA VISUALIZZAZIONE. È lo spazio libero nella dimensione allocata per il tuo tavolo.

1

L'ottimizzazione della tabella può essere molto problematica. Ad esempio se la tabella viene utilizzata pesantemente su un sito.

http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html

Dopo l'eliminazione di un gran parte di una tabella MyISAM o archivio, o fare molte modifiche per un MyISAM o MEDIA tabella con righe di lunghezza variabile (tabelle contenenti VARCHAR, VARBINARY, BLOB o TEXT colonne). Le righe eliminate vengono mantenute in un elenco collegato e le successive operazioni INSERT riutilizzano le vecchie posizioni di riga. <

Credo di aver confermato questo comportamento. E certamente sarebbe davvero molto utile.