Informática

¿MyISAM o InnoDB?

23 julio, 2014

El motor de almacenamiento (storage-engine) es el encargado de guardar, gestionar y recuperar información de una tabla. Los motores de almacenamiento más utilizados en bases de datos MySQL son MyISAM e InnoDB.

Es necesario tomarse unos minutos antes de decidir qué motor de almacenamiento debemos de seleccionar para obtener un rendimiento óptimo de nuestra base de datos, puesto que ambas opciones aportan unas características que determinarán que la base de datos sea ágil o por el contrario se demoré en la realización de algunas consultas.

MyISAM
MyISAM es el mecanismo de almacenamiento de datos usada por defecto por el sistema administrador de bases de datos relacionales MySQL. Este tipo de tablas están basadas en el formato ISAM pero con nuevas extensiones. En las últimas versiones de MySQL, el motor InnoDB está empezando a reemplazar a este tipo de tablas por su capacidad de ejecutar transacciones de tipo ACID y bloqueo de registros e integridad referencial.” ( Fuente Wikipedia)

InnoDB
InnoDB es un mecanismo de almacenamiento de datos de código abierto para la base de datos MySQL, incluido como formato de tabla estándar en todas las distribuciones de MySQL AB a partir de las versiones 4.0. Su característica principal es que soporta transacciones de tipo ACID y bloqueo de registros e integridad referencial. InnoDB ofrece una fiabilidad y consistencia muy superior a MyISAM, la anterior tecnología de tablas de MySQL, si bien el mejor rendimiento de uno u otro formato dependerá de la aplicación específica.” ( Fuente Wikipedia)

El motor de almacenamiento InnoDB aporta a MySQL una gestión transaccional de acuerdo a las características ACID (Atomicity, Consistency, Isolation and Durability), garantizando la integridad de nuestras tablas con capacidad de commit (confirmación), rollback (cancelación) y recuperación de fallos. Mientras que el motor de almacenamiento MyISAM no es capaz de gestionar transacciones.

Al poder gestionar bases de datos relacionales, InnoDB soporta FOREIGN KEY, mientras que MyISAM es incapaz de gestionarlos.

InnoDB almacena sus tablas e índices en un espacio de tablas que puede estar formado de varios ficheros o varias particiones. Por el contrario cada tabla MyISAM almacenada en disco genera tres ficheros con el mismo nombre, que será el nombre de la tabla, pero diferentes extensiones. Un fichero .frm donde se guarda la estructura de la tabla, un fichero .myd donde se guardan los datos de la tabla y un fichero .myi donde se guardan los índices de la tabla.

El hecho de que el motor de almacenamiento MyISAM genere ficheros para cada tabla implica que estemos condicionados a que el tamaño máximo de fichero sea el máximo aceptado por un sistema operativo concreto donde se aloje la base de datos, mientras que en el motor de almacenamiento InnoDB, las tablas puedes ser de cualquier tamaño.

MyISAM permite la indexación de campos de tipo blob y text, al igual que permite valores nulos en columnas indexadas, mientras que InnoDB no. Por tanto si en su aplicación es necesario realizar búsquedas full-text, necesitará una base de datos MyISAM.

MyISAM es más rápido que InnoDB, puesto que en las consultas InnoDB se debe de comprobar la integridad referencial de los datos, mientras que en MyISAM eso no es necesario, ya que esa propiedad no es soportada por este motor de almacenamiento.

InnoDB disponde de herramientas de recuperación ante errores o reinicios inesperados del sistema a partir de sus logs, mientras que MyISAM necesita una exploración exhaustiva para encontrar los índices de los datos de las tablas y recuperarlos en el caso de que los datos no hayan sido volcados todavía a disco.

InnoDB será el motor de almacenamiento adecuado en las bases de datos donde abunden sentencias de inserción, eliminación y edición de información, puesto que las herramientas de integridad referencial y de control de transacciones dotarán a estos sistemas de una eficiencia y rapidez que no pueden aportar MyISAM. Por el contrario, MyISAM será el motor de almacenamiento adecuado en bases de datos donde abunden las sentencias de consulta (SELECT), puesto que la agilidad que aporta este motor de almacenamiento es mayor ante consultas complejas, ya que deja de lado toda la integridad referencial.

Si su base de datos necesita de un modelo relacional, inevitablemente debe decantarse por InnoDB, ya que MyISAM no soporta diseño de bases de datos relacionales.

En conclusión, la elección del motor de almacenamiento estará condicionada a muchos parámetros y está claro que esa decisión condicionará la eficiencia de tu base de datos.

Puedes compartir este artículo en:
  • Reply
    fede
    19 noviembre, 2014 at 9:11 pm

    Hola,
    actualice a MySQL5.5 y perdi todas mis tablas(tipo MyISAM) de MySQL5.0, ¿puedo recuperarlas a partir de la carpeta data de MySQL?

    he intentado reparar los indices de las tablas con la herramienta myisamchk pero al arrancar MySQL no me muestra las BBDDs(pero la carpeta de la BBDD existe en la carpeta data de MySQL) ¿alguna sugerencia?

    Gracias

    • Reply
      guillermo
      18 octubre, 2022 at 5:59 pm

      no puedes

Información básica acerca de cómo protegemos tus datos conforme al Reglamento General de Protección de Datos (Reglamento UE 2016/679) y en la Ley Orgánica 3/2018, de 5 de diciembre, de Protección de Datos Personales y garantía de los derechos digitales

De conformidad con lo establecido en el Reglamento General de Protección de Datos, te informamos de:

- Quien es el responsable del tratamiento: SEAS, Estudios Superiores Abiertos S.A.U con NIF A-50973098, dirección en C/ Violeta Parra nº 9 – 50015 Zaragoza y teléfono 976.700.660.

- Cuál es el fin del tratamiento: Gestión y control de los comentarios del blog de SEAS. 

- En que basamos la legitimación: En tu consentimiento.

- La comunicación de los datos: No se comunicarán tus datos a terceros.

- Los criterios de conservación de los datos: Se conservarán mientras exista interés mutuo para mantener el fin del tratamiento o por obligación legal. Cuando dejen de ser necesarios, procederemos a su destrucción.

- Los derechos que te asisten: (i) Derecho de acceso, rectificación, portabilidad y supresión de sus datos y a la limitación u oposición al tratamiento, (ii) derecho a retirar el consentimiento en cualquier momento y (iii) derecho a presentar una reclamación ante la autoridad de control (AEPD).

- Los datos de contacto para ejercer tus derechos: SEAS, Estudios Superiores Abiertos S.A.U. C/ Violeta Parra nº 9 –
50015 Zaragoza (España) o través de correo electrónico a lopd@estudiosabiertos.com

- También puedes ponerte en contacto con nuestro Delegado de Protección de Datos en dpd@estudiosabiertos.com

Información adicional: Puedes consultar la información adicional y detallada sobre nuestra política de privacidad