MyISAM e InnoDB son sin duda los motores de almacenamiento mas populares en MySql, pero de acuerdo a cual elijamos para nuestra aplicación dependerá el éxito y rendimiento de la misma ya que ambos motores fueron creados para fines distintos por lo cual no me atrevería a decir que uno es mejor que otro, mas bien debemos analizar las características de cada uno y en base a este elegir el mejor motor de almacenamiento para nuestras tablas.
De entrada la característica mas notable y por la cual nos podemos guiar sin pensarlo dos veces es la siguiente.
- InnoDB Si necesitamos transacciones, claves foráneas y bloqueos
- MyISAM si lo que necesitamos y utilizamos mas son consultas SELECT a la base de datos
Conociendo un poco mas las características de cada motor.
InnoDB
- Motor de almacenamiento transaccional (ACID)
- Commit (confirmación), rollback (cancelación) y recuperación de fallos.
- InnoDB realiza bloqueos a nivel de fila y también proporciona funciones de lectura consistente sin bloqueo en sentencias SELECT.
- Incrementan el rendimiento y la capacidad de gestionar múltiples usuarios simultáneos.
- No se necesita un bloqueo escalado en InnoDB porque los bloqueos a nivel de fila ocupan muy poco espacio.
- InnoDB soporta restricciones FOREIGN KEY.
- Si predominan los INSERT y UPDATE, se notara un aumento de rendimiento con respecto a MyISAM.
MyISAM
- Mayor velocidad en general a la hora de recuperar datos (SELECT).
- Recomendable para aplicaciones en las que dominan las sentencias SELECT ante los INSERT / UPDATE.
- No soporta atomicidad ACID, al no hacer comprobaciones de la integridad referencial, ni bloquear las tablas para realizar las operaciones, la velocidad es muy notable.
- (Avanzado) los archivos de los datos y de los index pueden estar localizados en diferentes dispositivos físicos, es decir podemos asignar discos duros para ciertas tablas y con esto ganamos mayor velocidad.
- Las columnas tipo Text y Blob pueden ser indexadas.
- En las columnas indexadas pueden contener un valor NULL
¿Aún tienes dudas de qué motor es el que necesitas?
InnoDB SI:Tu tabla va a recibir INSERTs, UPDATEs y DELETES mucho más tiempo de lo que será consultada MyISAM: Necesitarás hacer búsquedas full-tex InnoDB: Prefieres o requieres diseño relacional de bases de datos MyISAM: Es un problema el espacio en disco o memoria RAM
Por ultimo puedes analizar la información de una tabla de acuerdo al motor de almacenamiento usado.
El numero de registros es 233,419
Name | Engine | RowsData | SizeIndex | SizeTotal | Size |
tabla1 | MyISAM | 227.95K | 21.85M | 10.96 M | 32.81M |
tabla1 | InnoDB | 225.47K | 39.58M | 21.03 M | 60.61M |
Ningún motor es mejor que otro, ya que cada uno tiene propósitos diferentes, en nuestra BD podemos usar los dos motores ya que estos se establecen a nivel tabla no a nivel BD.