Diferencias Entre MyISAM y InnoDB

3

Click here to load reader

Transcript of Diferencias Entre MyISAM y InnoDB

Page 1: Diferencias Entre MyISAM y InnoDB

Diferencias Entre MyISAM y InnoDB

                             ISAM                             MyISAM                             InnoDB                             DBD (Berkeley Database)

El servidor de bases de datos MySQL soporta distintos tipos de tablas, como las antes mencionadas, de éstas, InnoDB y MyISAM merecen una atención especial y mencionaremos algunas diferencias.

Las tablas del tipo InnoDB están estructuradas de forma distinta que MyISAM, ya que se almacenan en un sólo archivo en lugar de tres, y sus principales características son que permite trabajar con transacciones, y definir reglas de integridad referencial.

Las transacciones aportan una fiabilidad superior a las bases de datos. Si disponemos de una serie de consultas SQL que deben ejecutarse en conjunto, con el uso de transacciones podemos tener la certeza de que nunca nos quedaremos a medio camino de su ejecución.

Para este fin, las tablas que soportan transacciones, como es el caso de InnoDB, son mucho más seguras y fáciles de recuperar si se produce algún fallo en el servidor, ya que las consultas se ejecutan o no en su totalidad. Por otra parte, las transacciones pueden hacer que las consultas tarden más tiempo en ejecutarse.

Por ejemplo:

Al ejecutar sentencias de modificación de datos SQL en MyISAM, y se produce algún corte en la conexión y las consultas no se han ejecutado completamente, puede que queden sólo parte de los registros actualizados y no sabremos qué registros no se han actualizado.

En cambio, utilizando InnoDB, si se produce un corte mientras se ejecuta la consulta SQL no se aplicarán los cambios y podremos volver a ejecutarla, es decir, garantiza que una transacción se ejecute íntegramente, de lo contrario la anula.

MyISAM no permite integridad referencial (uso de claves foráneas para “enlazar” varias tablas), en cambio InnoDB sí permite este tipo de relaciones.

InnoDB es más eficiente que MyISAM en cuanto a tiempos de respuesta para operaciones habituales, tales como INSERT, UPDATE, etc.

 En la página de MySQL viene toda la documentación relacionada con ambas tablas, quizá esto te ayude (http://dev.mysql.com/doc/).

Hace tiempo hice un estudio sobre características y respuesta de las diferentes bases de datos (http://emilio.aesinformatica.com/2007/03/15/mysql-vs-postgresql/)

Page 2: Diferencias Entre MyISAM y InnoDB

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.