viernes, marzo 27, 2009

Ventajas y desventajas de MyISAM e InnoDB

Vía TuFuncion
Una nota bien "Coquito aprende MySql", pero tener esa información puede evitar más de un dolor de cabeza. Por ejemplo si queremos hacer mantenimiento de datos con borrados en cascada y ese tipo de integridad que en ciertos escenarios es muy util. Gracais a Tufunción

 
 

Enviado por luishernando a través de Google Reader:

 
 

vía TuFuncion de manu el 26/03/09

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.
  • Soporte de transacciones
  • Bloqueo de registros
  • 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 INSERT y UPDATE 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.

Desventajas de MyISAM

  • Escasa integridad de datos.
  • 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.

<!--break-->
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.


 
 

Cosas que puedes hacer desde aquí:

 
 

No hay comentarios.:

Publicar un comentario

Gracias! ¿Qué sería de la red sin tu opinion? Algo muy aburrido! :D