MyISAM VS InnoDB, cual es mejor? Parte 1

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.

Leave a Reply

Your email address will not be published. Required fields are marked *