Optimització de MySQL

De Cacauet Wiki
La revisió el 10:23, 24 feb 2016 per Enric (discussió | contribucions)
(dif) ← Versió més antiga | Versió actual (dif) | Versió més nova → (dif)
Salta a la navegació Salta a la cerca

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:

En motors MyISAM podem realitzar una optimització de les taules millorant la seva fragmentació interna.

  1. Analitzem la taula:
    mysql> show table status like "taula1"\G
  2. 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:

  1. Volcar informació amb mysqldump
  2. Deshabilitar les claus forànies que depenguin de la taula
  3. Esborrar la taula
  4. Crear la taula de nou
  5. Carregar el volcat
  6. Tornar a habilitar les claus forànies

Tot i que ja posats, potser val més recrear tot la base de dades ;)