2009-12-24 15 views
13

Tengo 2 tablas en las que deseo una mayor robustez y, afortunadamente, no requieren frecuentes tomas rápidas de datos y exámenes. Todas las demás tablas serían inevitablemente MyISAM.Uso de una combinación de tablas InnoDB y MyIsam

¿Puedo usar ambos de forma segura (he leído un puñado de desalientos de esto) sin temor a que los errores o los datos se vean afectados por las diferencias entre los motores?

Respuesta

11

Sí, puedes.

Tenga en cuenta que solo las tablas InnoDB admiten transacciones y relaciones FOREIGN KEY.

26

se puede, pero esto introduce una serie de desventajas:

  • Su ajuste del servidor será ahora ser necesariamente un compromiso - no se puede utilizar toda la memoria, ya sea para MyISAM o InnoDB (Nota: Esto no se aplica si están en servidores diferentes)
  • La replicación falla en una serie de casos extremos, porque si tiene una transacción fallida que contenía cambios en algunas tablas MyISAM, no puede confirmarla ni retrotraerla correctamente
  • Todavía puede ' Haga una copia de seguridad de su servidor utilizando MVCC, porque aún no obtendrá una instantánea consistente de MyISAM t ables

Así que, básicamente, te animo a que cambies por completo a InnoDB. Entonces puede olvidarse de MyISAM y no dedicarle recursos, y obtener todos los beneficios de usar InnoDB. Cualquiera que piense que MyISAM es más rápido no está ajustando InnoDB correctamente, o tiene datos tan pequeños que a quién le importa.

MyISAM realiza exploraciones de tabla más rápidas, pero si lo hace en tablas grandes, tiene problemas mayores.

+0

Buena respuesta MarkR, me preguntaba en qué "casos límite" podría fallar la replicación de una base de datos mixta InnoDB/MyIsam? ¿Solo utilizando transacciones que afectan tanto a las tablas de InnoDB como de MyIsam? ¿Crees que es seguro en cualquier otro caso? Gracias –

+0

Si ocurre una transacción en el maestro que involucra las tablas MyISAM e innodb, se compromete con éxito, se empaqueta, luego en el esclavo, la parte de InnoDB falla con un punto muerto, la transacción se reintentará. Sin embargo, la parte MyISAM de la transacción no se puede revertir, por lo que el esclavo tendrá que repetirla (y esperar que no pase nada malo), pero algo malo puede ocurrir y todo el esclavo se romperá (la replicación se detuvo hasta la intervención manual) . Hay muchos otros casos, este es un ejemplo que acabo de inventar. – MarkR

Cuestiones relacionadas