MySQL è un potente Sistema di Gestione di Database Relazionali open source o, in breve, RDBMS. È stato rilasciato nel lontano 1995 (20 anni fa). Utilizza il Linguaggio di Query Strutturato, che è probabilmente la scelta più popolare per gestire i contenuti all’interno di un database. La versione più recente di MySQL è la 5.6.25 ed è stata rilasciata il 29 maggio 2015.
Un fatto interessante su MySQL è che il nome deriva da My, la figlia di Michael Widenius (il creatore di MySQL). Anche se ci sono molte curiosità interessanti su MySQL, questo articolo è destinato a mostrarti alcune pratiche utili per aiutarti a gestire il tuo server MySQL.

Nell’aprile del 2009 il progetto MySQL è stato acquisito da Oracle. Come risultato, è stata creata una fork della community di MySQL chiamata MariaDB. Il motivo principale per la creazione della fork era quello di mantenere il progetto libero sotto la General Public License.
Oggi, MySQL e MariaDB sono uno dei (se non il più) frequentemente utilizzati RDBMS per le applicazioni web come WordPress, Joomla, Magento e altri.
Questo articolo ti mostrerà alcuni consigli di base, ma utili, su come ottimizzare e migliorare le prestazioni di MySQL/MariaDB. Tieni presente che questo articolo presume che tu abbia già installato MySQL o MariaDB. Se ti stai ancora chiedendo come installarli sul tuo sistema, puoi seguire le nostre guide dettagliate qui:
- Installazione di LAMP su RHEL/CentOS 7
- Installazione di LAMP su Fedora 22
- Impostazione di LAMP su Ubuntu 15.04
- Installazione di MariaDB su Debian 8
- Installare MariaDB su Gentoo Linux
- Installare MariaDB su Arch Linux
Importante: Prima di iniziare, non accettare ciecamente questi suggerimenti. Ogni configurazione di MySQL è unica e richiede ulteriori considerazioni prima di apportare modifiche.
Cose da sapere:
- Il file di configurazione di MySQL/MariaDB si trova in
/etc/my.cnf
. Ogni volta che modifichi questo file, dovrai riavviare il servizio MySQL affinché le nuove modifiche abbiano effetto. - Per la stesura di questo articolo è stata utilizzata la versione di MySQL 5.6 come modello.
1. Abilita InnoDB file-per-table
Prima di tutto è importante spiegare che InnoDB è un motore di archiviazione. MySQL e MariaDB utilizzano InnoDB come motore di archiviazione predefinito. In passato, MySQL conservava le tabelle del database e gli indici in un tablespace di sistema. Questo approccio era pensato per server il cui unico scopo è l’elaborazione del database e il disco di archiviazione non viene utilizzato per altri scopi.
InnoDB fornisce un approccio più flessibile e le informazioni di ogni database vengono conservate in un file di dati .ibd
. Ogni file .ibd rappresenta un tablespace autonomo. In questo modo, le operazioni sul database come “TRUNCATE” possono essere completate più velocemente e è possibile recuperare spazio non utilizzato quando si elimina o si tronca una tabella del database.
Un altro vantaggio di questa configurazione è il fatto che è possibile conservare alcune delle tabelle del database in un dispositivo di archiviazione separato. Questo può migliorare notevolmente il carico di I/O sui dischi.
La direttiva innodb_file_per_table è abilitata per impostazione predefinita in MySQL 5.6 e versioni successive. È possibile verificare ciò nel file /etc/my.cnf. La direttiva appare così:
innodb_file_per_table=1
2. Archiviare i dati del database MySQL su una partizione separata
Nota: Questa configurazione funziona solo con MySQL, non con MariaDB.
A volte, le operazioni di lettura/scrittura del sistema operativo possono rallentare le prestazioni del server MySQL, specialmente se si trovano sullo stesso disco rigido. Invece, consiglio di utilizzare un disco rigido separato (preferibilmente SSD) per il servizio MySQL.
Per completare questa operazione, sarà necessario collegare il nuovo disco al computer/server. Per scopi di questo articolo, supponiamo che il disco sia identificato come /dev/sdb.
Il prossimo passo è preparare il nuovo drive:
# fdisk /dev/sdb
Adesso prema “n” per creare una nuova partizione. Successivamente prema “p” per rendere la nuova partizione primaria. Dopo aver impostato il numero della partizione da 1-4. Poi selezionera il dimensionamento della partizione. Premi invio qui. Nel passo successivo dovrai configurare la dimensione della partizione.
Se vuoi usare l’intero disco, premi ancora una volta invio. Altrimenti puoi impostare manualmente la dimensione della nuova partizione. Quando sei pronto, premi “w” per scrivere i cambiamenti. Ora crearemo un filesystem per la nostra nuova partizione. Questo può essere facilmente fatto con:
# mkfs.ext4 /dev/sdb1
Ora montare la nostra nuova partizione in una cartella. Ho chiamato la mia cartella “ssd” e la ho creata nella directory radice:
# mkdir /ssd/
Siamo pronti a montare la nuova partizione appena creata nella nuova cartella:
# mount /dev/sdb1 /ssd/
Puoi eseguire il montaggio all’avvio aggiungendo la seguente riga nel file /etc/fstab.
/dev/sdb1 /ssd ext3 defaults 0 0
Ora sei pronto a spostare MySQL sul nuovo disco. Prima di tutto, fermare il servizio MySQL con:
# service mysqld stop
I would recommend you stopping Apache/nginx as well to prevent any attempts to write in the databases:
# service httpd stop # service nginx stop
Ora copiare l’intero directory MySQL sul nuovo drive:
# cp /var/lib/mysql /ssd/ -Rp
Questo potrebbe richiedere del tempo, a seconda della grandezza dei tuoi database MySQL. Una volta completato questo processo, rinominare la directory MySQL:
# mv /var/lib/mysql /var/lib/mysql-backup
Poi crearemo un link simbolico.
# ln -s /ssd/mysql /var/lib/mysql
Ora sei pronto per avviare MySQL e il tuo servizio web:
# service mysqld start # service httpd start # service nginx start
A questo punto i tuoi database MySQL saranno accessibili dal nuovo disco.
Source:
https://www.tecmint.com/mysql-mariadb-performance-tuning-and-optimization/