Cuándo usar MyISAM e InnoDB? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

MyISAM está diseñado con la idea de que su base de datos se consulta mucho más que su actualización y, como resultado, realiza operaciones de lectura muy rápidas. Si su relación de lectura a escritura (insertar / actualizar) es inferior al 15%, es mejor usar MyISAM.

Usos de InnoDB bloqueo de nivel de fila, tiene capacidades de confirmación, reversión y recuperación de bloqueos para proteger los datos del usuario. Soporta transacciones y tolerancia a fallos

Las diferencias anteriores son correctas entre MyISAM e InnobDB? por favor guíe si hay otras limitaciones para MYISAM e InnobDB. ¿cuándo debo usar MyISAM o cuándo Innodb? ¡Gracias!

Author: Licson, 2013-03-28

2 answers

Lea acerca de Motores de Almacenamiento.

MyISAM:

El motor de almacenamiento MyISAM en MySQL.

  • Más fácil de diseñar y crear, por lo tanto mejor para los principiantes. No se preocupe por las relaciones exteriores entre las mesas.
  • Más rápido que InnoDB en general como resultado de la estructura más simple, por lo tanto, mucho menos costos de recursos del servidor. -- La mayoría ya no es verdad.
  • Indexación de texto completo. -- InnoDB lo tiene ahora
  • Especialmente bueno para tablas de lectura intensiva (select). -- La mayoría ya no es verdad.
  • La huella del disco es 2x-3x menor que la de InnoDB. As A partir de la versión 5.7, esta es quizás la única ventaja real de MyISAM.

InnoDB:

El motor de almacenamiento InnoDB en MySQL.

  • Soporte para transacciones (dándole soporte para la propiedad ACID).
  • Bloqueo a nivel de fila. Tener un mecanismo de bloqueo de grano más fino le da una mayor concurrencia en comparación con, por ejemplo, MyISAM.
  • Restricciones de clave externa. Lo que le permite permitir que la base de datos garantice la integridad del estado de la base de datos y las relaciones entre las tablas.
  • InnoDB es más resistente a la corrupción de la tabla que MyISAM.
  • Soporte para grupos de búfer grandes tanto para datos como para índices. MyISAM key buffer es solo para índices.
  • MyISAM está estancado; todas las mejoras futuras estarán en InnoDB. Esto fue hecho abundantemente claro con el lanzamiento de la versión 8.0.

Limitaciones de MyISAM:

  • Sin claves foráneas y eliminaciones/actualizaciones en cascada
  • No integridad transaccional (cumplimiento de ÁCIDOS)
  • No hay habilidades de reversión
  • 4,284,867,296 row limit (2^32) This Esto es antiguo predeterminado. El límite configurable (para muchas versiones) ha sido de 2**56 bytes.
  • Máximo de 64 índices por tabla

InnoDB Limitaciones:

  • No hay indexación de texto completo (Por debajo de-5.6 versión mysql)
  • No se puede comprimir para rápido, solo lectura (5.5.14 introducido ROW_FORMAT=COMPRESSED)
  • No se puede reparar una tabla InnoDB

Para una breve comprensión lea los siguientes enlaces:

  1. Motores MySQL: InnoDB vs. MyISAM-Una comparación de Pros y Cons
  2. Motores MySQL: MyISAM vs. InnoDB
  3. ¿Cuáles son las principales diferencias entre InnoDB y ¿MyISAM?
  4. MyISAM versus InnoDB
  5. ¿Cuál es la diferencia entre MyISAM e InnoDB?
  6. MySql: MyISAM vs Inno DB!
 204
Author: Tony Stark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-01 22:45:34

Utilice MyISAM para datos muy poco importantes o si realmente necesita esas ventajas de rendimiento mínimas. El rendimiento de lectura no es mejor en todos los casos para MyISAM.

Personalmente nunca usaría MyISAM en absoluto más. Elige InnoDB y lanza un poco más de hardware si necesitas más rendimiento. Otra idea es mirar sistemas de bases de datos con más características como PostgreSQL si corresponde.

EDITAR: Para el rendimiento de lectura, este enlace muestra que InnoDB a menudo es en realidad no más lento que MyISAM: http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/

 16
Author: Argeman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-28 11:14:44