mysql - tablas - ¿Cuál es la diferencia entre MyISAM e InnoDB?
myisam vs innodb ventajas (2)
Las principales diferencias entre InnoDB y MyISAM ("con respecto al diseño de una tabla o base de datos" que usted solicitó) son la compatibilidad con "integridad referencial" y "transacciones".
Si necesita que la base de datos aplique restricciones de clave foránea, o si necesita que la base de datos admita transacciones (es decir, los 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) luego 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 declaració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 preguntaste (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, entonces MyISAM está en consideración.
Una discusión más detallada de las diferencias es bastante poco práctica (en este foro) sin 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, características 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 opción de utilizar una base de datos relacional vendría más tarde, e incluso más tarde la opción de MySQL como sistema de administración de base de datos relacional, y luego la selección de un motor de almacenamiento para cada tabla.
Esta pregunta ya tiene una respuesta aquí:
- MyISAM versus InnoDB [cerrado] 27 respuestas
Entiendo que esta pregunta se ha formulado anteriormente, pero la mayoría de las veces se hace en relación con una base de datos o tabla específica. No puedo encontrar una respuesta en este sitio que describa los dos motores y sus diferencias sin tener en cuenta la base de datos específica de alguien.
Quiero poder tomar decisiones más informadas en el futuro con respecto al diseño de una tabla o base de datos, por lo que estoy buscando una respuesta completa sobre las diferencias entre los dos motores de almacenamiento.
¿Cuál es la diferencia entre MyISAM e InnoDB y qué debo buscar cuando intento decidir entre uno u otro?
MYISAM:
- MYISAM admite el bloqueo a nivel de tabla
- MyISAM diseñado para la necesidad de velocidad
- MyISAM no admite claves externas, por lo que llamamos MySQL con MYISAM es DBMS
- MyISAM almacena sus tablas, datos e índices en el espacio en disco utilizando tres archivos diferentes separados. (nombre de tabla.FRM, nombre de tabla.MYD, nombre de tabla.MYI)
- MYISAM no admite transacciones. No se puede cometer y deshacer con MYISAM. Una vez que se emite un comando se hace.
- MYISAM soporta búsqueda de texto completo
- Puede usar MyISAM, si la tabla es más estática con mucha selección y menos actualización y eliminación.
INNODB:
- InnoDB admite el bloqueo a nivel de fila
- InnoDB diseñado para obtener el máximo rendimiento al procesar grandes volúmenes de datos
- InnoDB admite claves externas, por lo que llamamos MySQL con InnoDB es RDBMS
- InnoDB almacena sus tablas e índices en un espacio de tablas
- InnoDB soporta transacciones. Puedes cometer y revertir con InnoDB.