Alguien me acaba de decir que InnoDB es mucho mejor que MyISAM. Entonces, cuando creo una tabla, ¿debo siempre intentar usar InnoDB Engine en lugar de MyISAM? ¿O ambos tienen sus grandes beneficios?¿Debería siempre preferir MySQL InnoDB sobre MyISAM?
Respuesta
MyISAM
es transaccional y organizado en montón. Los registros se identifican por el desplazamiento de fila en la tabla y los índices almacenan este desplazamiento como un puntero de fila.
InnoDB
admite transacciones y está organizado por índice. Los registros se identifican por el valor PRIMARY KEY
(o una columna interna oculta si no hay PRIMARY KEY
definidos) y se almacenan en un B-Tree
. Los índices secundarios almacenan el valor de PRIMARY KEY
como un puntero de fila.
Las consultas que implican exploraciones de tablas completas o búsquedas secundarias de índices suelen ser más rápidas en las tablas MyISAM
.
Las consultas que implican búsquedas de PRIMARY KEY
suelen ser más rápidas en las tablas InnoDB
.
MyISAM
tablas almacenan el número de registros en la tabla en los metadatos de la tabla, es por eso que las consultas como esta:
SELECT COUNT(*)
FROM myisamtable
son instantáneos.
MyISAM
las tablas están completamente bloqueadas en las operaciones DML
(con varias excepciones).
InnoDB
tablas bloquean los registros individuales y las brechas de índice, sin embargo, estos son los registros y las lagunas que se escanean, no solo las que coinciden con la condición WHERE
. Esto puede llevar a que los registros se bloqueen a pesar de que no coinciden.
InnoDB
tablas de integridad referencial (FOREIGN KEY
s). MyISAM
tablas no.
Existen varios escenarios que pueden mostrar los beneficios de ambos motores.
En pocas palabras:
usted debe utilizar InnoDB:
- si necesita soporte de transacciones
- si necesita claves foráneas
Debe utilizar MyISAM:
- si no necesitan lo anterior y
- necesita velocidad (operaciones de bases de datos más rápidas)
Es posible que desee leer este http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/ sobre la velocidad. –
mi humilde opinión, siempre se debe preferir InnoDB
sobre MyISAM
debido al apoyo transaccional que se encuentra en el corazón de cada sistema de base de datos relacional.
InnoDB es un motor de base de datos totalmente compatible con ACID y por lo tanto ofrece soporte para transacciones, etc. Como consecuencia, puede ser más lento que la base de datos MyISAM que tiende a optimizarse en una dirección diferente.
Por lo tanto, si necesita transacciones InnoDB (u otro RDBMS como PostgreSQL) es la opción obvia.
Hay una comparación razonable sobre el Wikipedia
Se puede usar tanto. Puede usar InnoDB para su escritura de base de datos/transacciones, pero leer de una base de datos MyISAM, que está desnormalizada. Esto da lo mejor de ambos mundos. Sabes que los datos están seguros con la integridad referencial de InnoDB, y puedes leerlos tan rápido como quieras con MyISAM.
Puede consultar un enlace sobre cómo usar ambos motores – Amareswar
Respuesta simple: No, no deberías.
algunos puntos sobre cada motor:
InnoDB
- Soporte completo para las restricciones de clave externa y transacciones. (compatible con ACID)
- Nivel de fila de bloqueo.
- Declaraciones de INSERT discutiblemente más rápidas. (y posiblemente ACTUALIZAR así)
MyISAM
- declaraciones más rápido de selección.
- soporte para texto completo busca
- columnas BLOB y TEXT pueden ser indexados
- 4x límite de almacenamiento máximo, en comparación con InnoDB (256 TB vs 64TB)
Ver más en el Manual:
- 1. MySQL - InnoDB vs MyISAM
- 2. mysql innodb vs myisam inserciones
- 3. ¿Qué es InnoDB y MyISAM en MySQL?
- 4. Mysql: Insertar rendimiento INNODB vs MYISAM
- 5. Hibernate: Crear tablas Mysql InnoDB en lugar de MyISAM
- 6. Mysql Search - InnoDB y transacciones vs MyISAM para búsqueda FULLTEXT
- 7. Diferencia de rendimiento entre Innodb y Myisam en Mysql
- 8. ¿Por qué utilizar InnoDB sobre MySIAM
- 9. No puedo convertir myISAM a innodb
- 10. Acelerando la conversión de MyISAM a InnoDB
- 11. Cuando MyISAM es mejor que InnoDB?
- 12. Convirtiendo MyISAM a InnoDB. ¿Beneficioso? ¿Consecuencias?
- 13. ¿Cuál es el equivalente de InnoDB del key_buffer_size de MyISAM?
- 14. Debería preferir los métodos estáticos en C#
- 15. InnoDB contra MyISAM tiempo de consulta de inserción
- 16. ¿Cuándo preferir JSON sobre XML?
- 17. mysql error 'TYPE = MyISAM'
- 18. Mover tablas y datos de MySQL desde el motor de almacenamiento MyISAM a InnoDB
- 19. MySQL InnoDB: innodb_flush_method
- 20. ¿Cómo puedo determinar el tipo de base de datos mysql: si es InnoDB o MyISAM?
- 21. Motor de base de datos MySQL: MyISAM for information_schema pero InnoDB para otras bases de datos
- 22. ¿Cómo puedo saber si una tabla mysql está utilizando myISAM o InnoDB Engine?
- 23. ¿cuál es la versión equivalente de MYISAM para el estado innodb espectáculo en MySQL
- 24. MySql - Convertir InnoDB a MyISAM Motor de almacenamiento de la base de datos
- 25. ¿Las declaraciones únicas de mysql son atómicas en MyISAM e InnoDB?
- 26. Uso de una combinación de tablas InnoDB y MyIsam
- 27. Cambiando el tipo de tabla de MyISAM a InnoDB
- 28. ¿Cuánto más rápido se compara MyISAM con InnoDB?
- 29. MySQL bloqueo de tabla MyISAM
- 30. Vida sin transacciones (MyISAM)
http://www.mikebernat.com/blog/MySQL_-_InnoDB_vs_MyISAM –
No; ambos tienen sus beneficios. – philfreo