¿Es cierto que el motor MyISAM es más preferible que InnoDB cuando estamos creando almacenamiento en clúster? ¿Por qué si es así?

StackOverflow https://stackoverflow.com/questions/1647023

Pregunta

Escuché esto hoy durante la entrevista para el desarrollador de Java. Tuve que enumerar algunas ventajas de MyISAM sobre InnoDB y por qué todavía se usa ampliamente. Y estaban esperando escuchar de mí la respuesta como título de esta pregunta.

Como entiendo por su propia respuesta: MyISAM no tiene claves foráneas y la base de datos se puede agrupar fácilmente (una tabla por servidor, por ejemplo). Pero, ¿por qué no podemos simplemente crear tablas InnoDB sin claves foráneas? Esta explicación me suena extraña ...

¿Fue útil?

Solución

No hay una respuesta de bala de plata aquí. Debe conocer los pros y los contras de cada uno antes de tomar una decisión sobre cuál usar para una aplicación en particular.

InnoDB:

  • admite FK's
  • admite transacciones
  • usa un búfer de memoria grande para la operación
  • admite bloqueo de nivel de fila
  • Pero tiene un costo de mantenimiento mucho más alto: realmente necesita ajustar el uso de memoria, configurar los archivos de la tabla, etc.

MyISAM:

  • tiene un montón de características de columna especiales que InnoDB no tiene, como:
    • índices de texto completo
    • columnas espaciales (estoy bastante seguro de que esto no funciona con InnoDB)
  • Muy rápido para casos de uso de lectura / anexos primarios (bloqueos de tabla para actualizaciones, eliminaciones, pero no para inserciones)
  • También suele tener inserciones más rápidas
  • almacena en caché los índices en la memoria (memoria intermedia clave), pero depende del sistema operativo para almacenar las páginas de datos reales

Por ejemplo, usaría InnoDB para cosas como comercio electrónico, bases de datos de usuarios o cualquier cosa en la que quiera usar transacciones.

Para almacenes de datos, registros, informes, etc., probablemente usaría MyISAM.

Otros consejos

  

Tuve que enumerar algunas ventajas de MyISAM sobre InnoDB

  1. Búsqueda FULLTEXT

  2. ...

  3. no, eso es todo.

(OK, hay algunos casos en los que MyISAM es más rápido que InnoDB, pero rara vez vale la pena soportar la falta de cumplimiento de ACID. Hoy en día, la razón principal para hacer algo con MyISAM es para obtener una búsqueda de texto completo que lamentablemente no es compatible con InnoDB.)

No estoy seguro de si esto ya no es cierto MyISAM es más rápido que InnoDB para las lecturas.

Además, las tablas MyISAM se almacenan en archivos separados y (por lo que puedo recordar) puedes transportar esos archivos a otra base de datos MySQL y es más fácil hacer una copia de seguridad.

De forma predeterminada, las bases de datos de InnoDB se almacenan en un gran globo en el sistema de archivos.

En cuanto a por qué todavía se usa ampliamente, siempre pensé que era porque es la opción predeterminada. Personalmente, sigo creyendo que las ventajas de InnoDB triunfan en MyISAM y MyISAM también tiene problemas con la integridad de los datos desde mi experiencia.

Ciertamente podría crear tablas InnoDB sin claves foráneas, pero eso está eliminando una de sus principales ventajas: la integridad referencial. Sin embargo, dado que MyISAM no se ha creado con la intención de integridad de referencia, las claves de la tabla se pueden almacenar de manera diferente y quizás de manera más eficiente.

También hay algunas diferencias en el bloqueo y el acceso. InnoDB admite el bloqueo de nivel de fila, mientras que MyISAM solo admite el bloqueo de nivel de tabla. Dependiendo de las consultas que esté realizando (SELECCIONES versus INSERCIONES / ACTUALIZACIONES), esto puede tener un efecto notable en el rendimiento.

Debes leer el Blog Mysql Peformance .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top