Tengo una sola base de datos de aproximadamente 4.5 GB ejecutándose en un servidor con 8 GB de RAM. La gran mayoría de las tablas son MyIsam (aproximadamente 4,3 GB), pero pronto voy a convertir algunas de ellas a InnoDB. (Va a ser un proceso lento, centrándose en las tablas más intensivas en escritura al principio).
¿Hay algo malo en ejecutar un servidor dedicado donde existan ambos tipos de motores de almacenamiento?
mysql
innodb
myisam
storage-engine
Derek Downey
fuente
fuente
Is there anything wrong with running a dedicated server where both types of storage engines exist?
Tal vez reformular aMultiple types
?Respuestas:
No hay nada de malo en usar múltiples motores de almacenamiento en la misma máquina física, siempre y cuando comprenda las ventajas y desventajas de cada uno. Existen consideraciones de rendimiento, limitaciones de características y casos de uso para todos los tipos de almacenamiento de complementos.
Por ejemplo, si tiene una tabla pequeña con 90% de escrituras, puede elegir MyISAM. Si los datos se pueden regenerar fácilmente y es una tabla pequeña, digamos para hacer cola, puede elegir Memoria. Si tiene una tabla con un 90% de lecturas, y los datos tienen que estar allí cuando la busca, entonces probablemente elija un motor de almacenamiento que admita transacciones y atomicidad configurable, como InnoDB. Si desea accesibilidad a través del sistema de archivos sin datos dañinos, puede elegir CSV.
No obstante, puede utilizar de forma segura múltiples motores de almacenamiento dentro del mismo esquema, así como el host físico.
Sin embargo, permítanme señalar que sus amortiguadores juegan un papel en todo este desastre. Si usa MyISAM e InnoDB, deberá tener cuidado de que key_buffer e innodb_buffer_pool no compitan. Esto requerirá una planificación cuidadosa de su parte, pero eso es lo que hacemos.
fuente
No puedo decirte si esta es una práctica común. Puedo decir sobre mi propia experiencia.
Siempre uso la mejor herramienta para el trabajo, así que mezclo motores todo el tiempo. La mayoría de mis proyectos usan MyISAM como motor predeterminado.
Cuando necesito funciones especiales disponibles en InnoDB, lo hago.
Cuando una tabla es principalmente de solo lectura, elijo el motor de archivo antes de poder parpadear.
Sabiendo que el servidor de la máquina tiene suficiente memoria, todos mis datos temporales se almacenan en tablas de montón.
Vi en el pasado algunas ralentizaciones que mezclaban MyISAM e InnoDB, pero este no es un problema específico de MySQL. Es un problema de diseño que no parece cuando usas solo un motor. En realidad, usar el motor incorrecto provoca más desaceleración, no importa si es solo MyISAM, solo InnoDB o una combinación de ambos. Es difícil definir una fórmula para saber cuándo ocurrirá la desaceleración. Solo las pruebas reales podrían decírtelo.
Por supuesto, no podría preservar la integridad y la coherencia mezclando InnoDB y MyISAM en una consulta única.
fuente
Intento evitar mezclar tablas MyISAM e InnoDB en la misma base de datos, pero esto es por razones de cordura y no prácticas. Sin embargo, me resulta útil tener una base de datos con tablas MyISAM para la búsqueda de texto completo para poder ejecutarla en los sitios. Mantenerlo en una base de datos separada con una clave foránea para cada entrada facilita que cualquier otro desarrollador que trabaje en la base de datos vea lo que está sucediendo.
fuente