MyISAM vs InnoDB

El motor de almacenamiento (storage-engine) es quien almacenará, manejará y recuperará información de una tabla en particular. Comparando MyISAM vs InnoDB, ninguno se destaca como la solución para la mayoría de los casos. Cada uno tiene sus pros y sus contras, por lo tanto al momento de decidir que motor de almacenamiento a utilizar dependerá mucho del escenario donde se aplique.

MyISAM

MyISAM es el motor de almacenamiento por default y está basado en el probado ISAM, incorporando nuevas características pero conservando su fiabilidad.

MyISAM almacena la información en tres archivos por tabla, uno para el formato de tabla, otro para los datos y un tercer archivo para los índices.

Las tablas MyISAM soportan un número de filas máximo de aproximadamente ~4.295E+09 y puede tener hasta 64 archivos índices por tabla.

Los campos Text y Blob pueden ser indexados completamente, lo que es de gran importancia para funciones de búsqueda.

InnoDB

InnoDB es relativamente nuevo comparado con MyISAM. Una de las principales diferencias de InnoDB es el soporte de transacciones e integridad referencial.

InnoDB provee bloqueo a nivel final, en contra del bloqueo a nivel tabla de MyISAM. Esto es, que mientras una consulta está actualizando o insertando una fila, otra consulta puede actualizar una fila diferente al mismo tiempo. Estas características incrementan la performance en concurrencia de múltiples usuarios.

Otra de las principales características es que permite definir Foreign Key Constraints, lo que permite a los desarrolladores asegurarse que los datos insertados con referencia a otra tabla permanecerán válidos (lo que se conoce como integridad referencial)

  • Comparación

MyISAM, en la mayoría de los casos será más rápido que InnoDB en selecciones, actualizaciones e inserciones bajo circunstancias normales.

InnoDB también es un motor de almacenamiento ágil, pero se destaca porque incorpora características como bloqueo a nivel filas, transacciones y diseño de tablas relacionales. Aunque la primera de las características nombradas solo se destaca en tablas que son “martilladas” constantes, como por ejemplo una tabla de logs, para el resto de los casos, un bloqueo a nivel tabla es suficiente en condiciones normales.

InnoDB se recupera de errores o reinicios no esperados del sistema a partir de sus logs, mientras que MyISAM requiere una exploración, reparación y reconstrucción de índices de los datos de las tablas que aun no habían sido volcadas a disco.

Matriz de decisión

¿Tu tabla va a recibir INSERTs, UPDATEs y DELETES mucho más tiempo de lo que será consultada? InnoDB
¿Necesitaras hacer búsquedas full-text? MyISAM
¿Prefieres o requieres diseño relacional de bases de datos? InnoDB
¿Es un problema el espacio en disco o memoria RAM? MyISAM
¿Dudas? MyISAM

Como conclusión final, podemos establecer un empate técnico. No hay ganadores.

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(4 votos, promedio: 4 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

4 respuestas a “MyISAM vs InnoDB”

  1. ¿Cuando utilizar MyISAM y cuando InnoDB? - mysql - Preguntas/Respuestas dice:

    […] MyISAM vs InnoDB […]

  2. Jhonny dice:

    Se que el post ya es algo viejo, pero para las versiones de MysqL 5.6.4 y superiores, el motor InnoDB ya soporta búsquedas de full-text.

    Saludos.

  3. Johnathan Belezos dice:

    Thank you for the blog post. Thomas and I are saving for our new book on this matter and your post has made all of us to save money. Your opinions really responded all our concerns. In fact, a lot more than what we had thought of just before we came upon your great blog. My partner and i no longer have doubts along with a troubled mind because you have completely attended to all of our needs above. Thanks

  4. Arnold Attanasio dice:

    Regards for this post, I am a big fan of this site would like to proceed updated.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.