Acceder

¿MyISAM o InnoDB? Motores en MySQL

Conoce diferencias entre estos dos motores de tablas en MySQL


En el siguiente artículo intentaré describir las diferencias de MySQL con motor MyISAM e InnoDB. Llevo ya un tiempo intentando encontrar información que sea relevante a la hora de tomar decisiones que pueden influir directamente en el rendimiento de un sistema web y creo que puedo condensar someramente algunas diferencias que permitan al desarrollador facilitar la elección.

Me enfrenté a esta disyuntiva cuando intentaba mejorar el rendimiento y velocidad de un sitio particular con más de 10,000 visitas diarias y bases de datos relacionales de más de 200,000 registros. Una solución IDEAL es la adecuada planificación para evitar consultas (querys) innecesarias o que la carga de ejecución de las bases de datos las asuma el cliente directamente.

MySQL

MySQL es un sistema de código abierto que permite el almacenamiento de información en sistemas informáticos que, a su vez, permite la elección de motores como InnoDB y MyISAM, entre otros menos relevantes.

Fuera del tuning que se puede hacer a la configuración de MySQL (my.cnf, 50-server.cnf, ...), para las mejoras de rendimiento de cachés, uso de CPU, uso de RAM o buffering en un VPS. Se puede configurar por tabla la asignación de dos motores: InnoDB y MyISAM.

MyISAM

MyISAM a mi entender es más popular debido a su sencillez, es un motor simple que permite mayor facilidad a la hora de administrar una base de datos. Se puede optimizar relativamente fácil. MyISAM consume menos memoria RAM respecto de InnoDB, recomendable para un servidor con recursos limitados o para bases de datos pequeñas (una tienda con menos de 2,000 productos o con pocas visitas, por ejemplo).

Generalmente he usado MyISAM debido a que es el motor por defecto en la creación de tablas, además de ser versátil. Sin embargo, cuando te enfrentas a un gran volumen de datos acompañado de alto tráfico, no basta con tunear la memoria caché.

InnoDB

InnoDB es un sistema de almacenamiento que prevalece y se ha establecido debido a su buen rendimiento y fiabilidad. Hoy en día, sobre versiones 5.6 de MySQL es el motor predeterminado para la generación de tablas en MySQL (en investigaciones personales, me he encontrado que clásicos CMS como Prestashop desde la versión 1.7 han asumido este motor como predeterminado, no así aún con Wordpress).

Las tablas bajo InnoDB organizan los datos bajo una clave primaria, ralentizando su actualización (UPDATE) e inserción (INSERT) de datos. Sin embargo, es más veloz en selección para grandes bases de datos.


Conclusiones

Es necesario conocer distintos tipos de motores de bases de datos. A la hora de la elección, que no vaya de preferencias personales, sino de la adecuación a cada tipo de proyecto generado desde un análisis de datos (o surgimiento de problemas, como consecuencia).

MyISAM, debería ser más rápido en cuestiones de inserción, actualización y elminación de registros, pero tiene menor performance en bases de datos relacionales de gran volumen.

InnoDB también es un motor rápido, destacándose la incorporación de bloqueo a nivel filas (y no tablas), transacciones y diseño de tablas relacionales. Destacándose cuando tienes tablas que son ejecutadas demasiado. Bajo condiciones normales, un bloqueo a nivel de tablas debería ser suficiente.