Optimització de MySQL
La revisió el 10:23, 24 feb 2016 per Enric (discussió | contribucions)
La optimització d'uns base de dades és important per millorar el rendiment i que les aplicacions que la utilitzen siguin el més ràpides possible.
Diferents aspectes a optimitzar:
- Un bon link sobre els logs de mysql.
- Algunes optimitzacions interessants.
- Script mysqltuner: ens farà una anàlisi i ens donarà consells per millorar el rendiment.
- Descàrrega ràpida:
- $ wget http://mysqltuner.pl/ -O mysqltuner.pl
- $ perl mysqltunner.pl
- També es pot instal·lar amb
$ sudo apt-get install mysqltuner
- Descàrrega ràpida:
- Els Indexs en MySQL és un dels aspectes que poden millorar més el rendiment en les queries a una base de dades.
- La fragmentació de les taules és un altre dels problemes típics de baixada de rendiment.
En motors MyISAM podem realitzar una optimització de les taules millorant la seva fragmentació interna.
- Analitzem la taula:
mysql> show table status like "taula1"\G
- Optimitzem taula:
mysql> optimize table taula1;
En el cas de InnoDB no podem realitzar aquestes optimitzacions. Si ho intentem, ens dirà això:
mysql> optimize table watchlist; +-------------------------+----------+----------+-------------------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +-------------------------+----------+----------+-------------------------------------------------------------------+ | enricmie_wiki.watchlist | optimize | note | Table does not support optimize, doing recreate + analyze instead | | enricmie_wiki.watchlist | optimize | status | OK | +-------------------------+----------+----------+-------------------------------------------------------------------+ 2 rows in set (0.40 sec)
Per optimitzar la fragmentació d'una InnoDB caldria:
- Volcar informació amb mysqldump
- Deshabilitar les claus forànies que depenguin de la taula
- Esborrar la taula
- Crear la taula de nou
- Carregar el volcat
- Tornar a habilitar les claus forànies
Tot i que ja posats, potser val més recrear tot la base de dades ;)