Nello scorso articolo riguardante il server dati MySQL su piattaforma Linux, ci siamo occupati dell’importazione ed esportazione dei dati, questa volta terminiamo la serie di articoli trattando della manutenzione ed ottimizzazione del server.
MySQL memorizza i dati e le chiavi di ricerca utilizzando il formato MyISAM ( a dire il vero non è l’unico formato supportato dal server ), ovvero un’estensione del formato ISAM ( Indexed Sequential Access Method ), per ogni database esiste una cartella specifica con il nome dello stesso, la posizione nella distribuzione Ubuntu 10.04 è in /var/lib/mysql, ed al suo interno troviamo tre file per ogni tabella esistente nel database. Questi file vengono classificati in base alla loro estensione:
- .MYD contiene i dati della tabella
- .MYI contiene gli indici della tabella
- .frm contiene informazioni sulla struttura della tabella
Per un amministratore di database è fondamentale mantenere il sistema sempre in perfetto funzionamento e con il massimo di efficienza. Non sempre però le cose vanno come devono andare e quindi se i dati sono stati persi occorre ripristinarli dal backup, mentre se si registrano solo piccole anomalie è possibile utilizzare l’utility myisamchk. La sintassi di questo comando è:
myisamchk [opzioni] nome
dove “nome” è il file .MYI della tabella sottoposta a controllo e tra le opzioni che possiamo utilizzare abbiamo:
- -c Controlla se la tabella contiene errori
- -e Controllo approfondito degli errori
- -F Effettua il controllo solo se la tabella non era stata chiusa in maniera corretta
- -C Controlla le tabelle che hanno subito una modifica dall’ultimo controllo
- -i Mostra le informazioni sulla tabella che si sta controllando
- -m Esegue un controllo approfondito e a maggiore velocità
- -U Marca la tabella come aperta se contiene errori
- -T Effettua il controllo sulla tabella senza apportare modifiche
- -B Effettua una copia di backup prima di apportare modifche
- -r Corregge gli errori
- -o Utilizza un più lento algoritmo di correzione
Questa utility accede direttamente al file fisico sull’hard disk, quindi occorre avere i giusti diritti di lettura e scrittura. Altro compito svolto da myisamchk è quello di ottimizzare gli indici per rendere più efficiente l’accesso ai dati, le opzioni per eseguire l’ottimizzazione sono: -a per analizzare e migliorare la distribuzione delle chiavi degli indici all’interno del file, -S per rigenerare l’indice in modo ordinato ed -R per effettuare un ordinamento fisico dei record in base agli indici ( operazione piuttosto lenta ). Il programma myisamlog si occupa di estrarre informazioni dai file di log ISAM generati dal demone di MySQL, se avviato con l’opzione –log-isam. Altra utility è myisampack che viene utilizzata per comprimere i file del database per ottimizzare lo spazio occupato e la velocità d’accesso. Purtroppo una volta compressa la tabella non è scrivibile e deve essere decompressa con il comando myisamchk -u. Per la sintassi e tutte le opzioni di questi comandi vi invito a visualizzare la pagina man del programma oppure la documentazione in linea del server MySQL.