sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es la diferencia entre MyISAM e InnoDB?

Las principales diferencias entre InnoDB y MyISAM ("con respecto al diseño de una tabla o base de datos" sobre la que preguntó) son la compatibilidad con la "integridad referencial" y las "transacciones".

Si necesita la base de datos para hacer cumplir las restricciones de clave externa, o necesita la base de datos para admitir transacciones (es decir, cambios realizados por dos o más operaciones DML manejadas como una sola unidad de trabajo, con todos los cambios aplicados o todos los cambios revertidos) entonces elegiría el motor InnoDB, ya que estas características están ausentes del motor MyISAM.

Esas son las dos mayores diferencias. Otra gran diferencia es la concurrencia. Con MyISAM, una instrucción DML obtendrá un bloqueo exclusivo en la tabla y, mientras se mantiene ese bloqueo, ninguna otra sesión puede realizar una operación SELECT o DML en la tabla.

Esos dos motores específicos sobre los que preguntó (InnoDB y MyISAM) tienen diferentes objetivos de diseño. MySQL también tiene otros motores de almacenamiento, con sus propios objetivos de diseño.

Entonces, al elegir entre InnoDB y MyISAM, el primer paso es determinar si necesita las funciones proporcionadas por InnoDB. Si no, MyISAM está disponible para su consideración.

Una discusión más detallada de las diferencias es bastante poco práctica (en este foro) en ausencia de una discusión más detallada del espacio del problema... cómo la aplicación usará la base de datos, cuántas tablas, el tamaño de las tablas, la carga de transacciones, los volúmenes de selección , inserción, actualizaciones, requisitos de concurrencia, funciones de replicación, etc.

El diseño lógico de la base de datos debe centrarse en el análisis de datos y los requisitos del usuario; la elección de utilizar una base de datos relacional vendría más tarde, e incluso más tarde la elección de MySQL como sistema de gestión de bases de datos relacionales, y luego la selección de un motor de almacenamiento para cada tabla.