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.
SEAS es el centro de formación online del Grupo San Valero, especializado en el ámbito técnico, industrial y de empresa. Visita www.seas.es para consultar nuestra oferta formativa de cursos y másteres. Formación profesional para el empleo de calidad y accesible para todos.
fede
19 noviembre, 2014 at 9:11 pmHola,
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
guillermo
18 octubre, 2022 at 5:59 pmno puedes