back to top

Manutenzione tabelle MySQL: ANALYZE, CHECK, OPTIMIZE e REPAIR TABLE

MySQL fornisce alcuni statement per la manutenzione, il miglioramento delle performances e la risoluzione dei problemi dei database. I comandi in questione sono tre, cioè:

  • ANALYZE TABLE
  • CHECK TABLE
  • OPTIMIZE TABLE
  • REPAIR TABLE

ANALYZE TABLE

Il comando ANALYZE TABLE analizza e scrive la distribuzione degli indici di una tabella; può essere utilizzato sia con le tabelle di tipo MyISAM (per le quali corrisponde a myisamchk –analyze-), InnoDB che NDB.

Il comando in esame restituisce il suo risultato presentandolo in una tabella composta da quattro colonne:

  • Table – il nome della tabella;
  • Op – contenente il tipo di operazione seguita (nel nostro caso "analyze");
  • Msg_type – tipo del messaggio (status, error, info, note o warning);
  • Msg_text – messaggio informativo circa l’eventuale problema rilevato.

Questa la sua sintassi:

ANALYZE TABLE tbl1, tbl2, ..., tblN;

CHECK TABLE

Il comando CHECK TABLE è utilizzato per controllare gli eventuali errori presenti in una o più tabelle. Funziona con le tabelle di tipo MyISAM, InnoDB e ARCHIVE. Questa la sintassi:

CHECK TABLE tbl1, tbl2, ..., tblN;

L’output prodotto da CHECK TABLE possiede la stessa struttura del comando ANALYZE TABLE proposto in precedenza (la colonna "Op" sarà valorizzata in questo caso con "check").

Solitamente questo comando viene eseguito prima di effetture la riparazione delle tabelle mediante il comando REPAIR TABLE che vedremo fra poco.

Non è necessario fare nulla se il comando restituisce nel campo "Msg_type" la stringa "status" e nel campo "Msg_text" la stringa "ok" oppure "Table is already up to date".

OPTIMIZE TABLE

Il comando OPTIMIZE TABLE ha la funzione di ottimizzare le peroformances del database effettuandone una deframmentazione: in pratica il database viene compattato recuperanmdo lo "spazio vuoto" creatosi a seguito della cancellazione o della modifica di grossi volumi di dati. Questo tipo di operazione consente di ridurre lo spazio utilizzato dal database e di rendere più efficenti le operazioni di accesso ai dati.

Il comando OPTIMIZE TABLE si rende necessario soprattutto quando si lavora con le tabelle di tipo MyISAM le quali gestiscono lo spazio in modo meno efficiente rispetto alle InnoDB. Questa la sintassi:

OPTIMIZE TABLE tbl1, tbl2, ..., tblN;

L’output restituito sarà formattato come quello visto per i comandi precedenti, ovviamente nel campo Op apparirà la scritta "optimize".

REPAIR TABLE

Il comando REPAIR TABLE può essere utilizzato per tentare di correggere degli errori presenti all’interno di tabelle MyISAM o ARCHIVE. Non è compatibile, invece, con lo storage engine InnoDB.

Se usato per le tabelle MyISAM il suo utilizzo è deltutto equivalente a:

myisamchk --recover nome_tabella

Il comando REPAIR TABLE deve essere utilizzato solo in caso di effettiva esigenza, non essendo un comando di manutenzione delle tabelle ma un sistema di ripristino a seguito di gravi errori che ne abbiano compromesso il normale funzionamento. Questa la sintassi:

REPAIR TABLE tbl1, tbl2, ..., tblN;

L’output restituito sarà formattato come quello visto per gli comandi di manutenzione, ovviamente nel campo Op apparirà la scitta "repair". Potrebbero comparire numerose righe in risposta al comando; ciò dipende dal numero di errori riscontrati all’interno della/e tabella/e.

REPAIR TABLE supporta due opzioni che possono essere aggiunte alla sintassi di base:

  • QUICK – cercherà di riparare esclusivamente gli indici della tabella;
  • EXTENDED – effettua un controllo lento ma più approfondito della tabella e degli indici.

Esempio:

REPAIR TABLE nome_tabella QUICK;
Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).

In questa guida...