È un po' problematico se gli amministratori del database devono accedere al server o avviare phpMyAdmin per ottimizzare i database uno per uno o tabella per tabella manualmente. A volte l'amministratore DB potrebbe semplicemente dimenticare di fare il lavoro o impostare la frequenza di ottimizzazione su tempi inferiori. Si consiglia di controllare tutte le tabelle nei database MySQL almeno una volta al giorno su un server occupato.
È possibile automatizzare l'ottimizzazione del processo MySQL utilizzando la funzione crontab in Linux/Unix/CentOS/FreeBSD. Il lavoro cron per controllare e ottimizzare i database MySQL può essere creato utilizzando l'utilità client mysqlcheck che arriva all'installazione di MySQL. Il client mysqlcheck può controllare, riparare, ottimizzare e analizzare le tabelle nel database MySQL.
Per creare un nuovo processo cron, accedi al server come root o qualsiasi altro utente, quindi modifica il file crontab (nella maggior parte dei sistemi operativi, crontab -e aprirà il file crontab nell'editor di testo predefinito) da aggiungere nella seguente riga di testo. Per gli utenti che utilizzano cPanel, fare clic su "Cron job" dove è possibile impostare crontab a intervalli giornalieri, orari e altri. I webmaster di esperienza possono anche impostare un file crontab in rc.hourly o rc.daily o in un'altra directory cron. Nota che se accedi come MySQL o come utente normale senza privilegi di accesso a tutti i database, non è possibile ottimizzare tutti i database, a meno che l'ID utente e la password per root non siano specificati come nell'esempio seguente.
0 1 * * * mysqlcheck -Aao --auto-repair -u root -p[password] > /dev/null
L'istruzione precedente ha una sintassi simile a "mysqlcheck [opzioni] –all-databases", dove il parametro –all-databases è l'azione predefinita se non è specificato alcun database, quindi può essere omesso. Il comando eseguirà il client mysqlcheck per analizzare e ottimizzare automaticamente tutti i database all'01:00 di tutti i giorni. Nota che non c'è spazio tra -p e la tua password per root. Puoi modificare il tempo di esecuzione in base alle tue preferenze e anche modificare le opzioni per il comando mysqlcheck. Se desideri solo controllare e ottimizzare determinati database o determinate tabelle senza il database, utilizza la seguente sintassi:
mysqlcheck [options] db_name [tables] mysqlcheck [options] --databases DB1 [DB2 DB3...]
Potresti voler rimuovere l'opzione –auto-repair dal comando precedente, poiché un'operazione di riparazione della tabella potrebbe causare la perdita di dati in alcune circostanze l'operazione dovuta a cause include, ma non si limita agli errori del filesystem. Per coloro che hanno modificato il set di caratteri e le regole di confronto dei database MySQL potrebbe anche essere necessario utilizzare l'opzione –default-character-set. Ulteriori informazioni su tutti gli interruttori e le opzioni disponibili sono disponibili qui.