TuFuncion TuFuncion
Buscar
Ventajas y desventajas de MyISAM e InnoDB

MySql soporta distintas tecnologías de almacenamiento de datos, entre estas destacan MyISAM e InnoDB, el primero de ellos (MyISAM) es el utilizado por defecto pero en la mayoría de los casos podremos cambiarlo cuando queramos.

Documentación de MySQL sobre InnoDB
Documentación de MySQL sobre MyISAM

Ventajas de MyISAM

  • Las tablas MyISAM son más simples, por lo tanto si eres nuevo con MySQL o con las bases de datos en general es mucho más recomendable que InnoDB.
  • Bloqueo de tablas
  • Nos permite tener las características ACID (Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia, Aislamiento y Durabilidad en español), garantizando la integridad de nuestras tablas.
  • Es probable que si nuestra aplicación hace un uso elevado de SELECT notemos un aumento de rendimiento con respecto a InnoDB.

Ventajas de InnoDB

  • Integridad de datos, cuando los contenidos se modifican con sentencias INSERT, DELETE o UPDATE, la integridad de los datos almacenados puede perderse de muchas maneras diferentes. Pueden añadirse datos no válidos a la base de datos, con las tablas InnoDB es más difícil que esto ocurra.
  • Mayor velocidad en general a la hora de recuperar datos.
  • Recomendable para aplicaciones en las que dominan las sentencias SELECT ante los INSERT / UPDATE.
  • Ausencia de características de atomicidad ya que no tiene que hacer comprobaciones de la integridad referencial, ni bloquear las tablas para realizar las operaciones, esto nos lleva como los anteriores puntos a una mayor velocidad.
  • Soporte de transacciones

Desventajas de MyISAM

  • Las tablas pueden llegar a dar problemas en la recuperación de datos.
  • El bloqueo de las tablas cuando se inserta o actualiza un registro es otra posible desventaja ya que el resto de las operaciones quedarán a la espera de la insercción o actualización del registro.

Desventajas de InnoDB

  • El diseño de su estructura es mucho más complejo que el diseño de una tabla MyISAM
  • No soporta búsquedas full-text, que para conjuntos de datos grandes, es mucho más rápido.
  • La última desventaja es su pobre rendimiento en operaciones sencillas como seleccionar datos si lo comparamos con las tablas MyISAM.


La elección es un tema delicado ya que hay que conseguir la mejor relación de calidad acorde con nuestra aplicación, obviamente si necesitamos transacciones, claves foráneas y bloqueos tendremos que escoger InnoDB por el contrario escogeremos MyISAM en aquellos casos en los que predominen las consultas SELECT a la base de datos (un gran número de páginas webs).

Por ejemplo si queremos hacer una tienda online o una aplicación de reserva de vuelos sin duda tendremos que escoger InnoDB que nos asegura mayor integridad de datos.

MyISAM sera la elección adecuada si eres nuevo con MySQL y para aplicaciones webs simples o poco definidas, por poner ejemplos de aplicaciones que deberían utilizar MyISAM: CMS (content management systems), simples motores de búsqueda ó blogs.

arrow1 Response

  1. Carmela
    108 mos ago

    Hola, me ha gustado mucho tu post, gracias por compartirlo!

    He encontrado sin embargo una cosilla en la sección “Ventajas de InnoDB”, que dices:

    “Recomendable para aplicaciones en las que dominan las sentencias SELECT ante los INSERT / UPDATE.”

    Y más adelante en el post dice:

    “por el contrario escogeremos MyISAM en aquellos casos en los que predominen las consultas SELECT a la base de datos”

    ¿Puede ser que haya un error en “Ventajas de InnoDB”? En teoría su fuerte son los rollback!

    Saludos!

Deja un comentario