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;