Ventajas y desventajas de MyISAM e InnoDB

Por el 26 de Marzo de 2009

en: Sin categoría

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.

  • Entradas relacionadas:
  • No hay coincidencias

9 Respuestas a Ventajas y desventajas de MyISAM e InnoDB

Avatar

Anónimo

26 de Marzo de 2009 a las 5:32 pm

Yo no conocía InnoDB probablemente por lo que comentais de que es un poco mas complejo, pero me parecen muy interesantes algunas de sus funcionalidades!

Avatar

Anónimo

27 de Marzo de 2009 a las 4:08 am

Muy pobre

Avatar

Anónimo

27 de Marzo de 2009 a las 6:41 am

Avatar

Anónimo

27 de Marzo de 2009 a las 11:10 am

jeje venía a decir lo mismo que el primer comentario. Fusilado de sitepoint.

Avatar

manu

27 de Marzo de 2009 a las 12:33 pm

Anonimo esta realmente pesado con lo de fusilado, ya lo explique hace dos dias, hay una gran diferencia entre fusilar una entrada y escribir sobre lo mismo, ni los puntos coinciden y por supuesto no se trata de una traducción ni mucho menos literal, la verdad es que lo unico que puedo decir es que aportaríais mas si dijéseis algún tema interesante sobre el que escribir y que a vuestro modo de ver no sea fusilado porque hoy en día esta casi todo escrito. Saludos

Avatar

Anónimo

28 de Marzo de 2009 a las 8:27 pm

¿sabes como no seria un fusilado? si citaras las fuentes.

Avatar

Anónimo

20 de Abril de 2009 a las 6:33 am

Que triste, que no revisen antes de hacer copy-paste..

Avatar

Anónimo

20 de Abril de 2009 a las 6:33 am

Que triste, que no revisen antes de hacer copy-paste..

Avatar

Hector

26 de Enero de 2010 a las 10:34 am

Fusilado no se si estara, pero es incorrecto.

Lo de ACID es de InnoDB no de MyISAM.

En InnoDB dice “Recomendable para aplicaciones en las que dominan las sentencias SELECT ante los INSERT / UPDATE.” y es al reves que predominen los INSERT/UPDATE.

Tambien dice: “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.”

Es una traduccion mal hecha y como el autor no tiene NI IDEA DEL TEMA pues no sabe que esta metiendo fallos y gordos.

En fin ..

Dejar un comentario

Patrocinadores

¿Interesado en patrocinar TuFunción?

Suscripción

Primera División