Estoy listo para pasar de MyISAM a InnoDB, pero ¿quería saber si había una lista completa de cosas que buscar? Por ejemplo, no he visto ninguna lista que mencione que ejecutar DISABLE KEYS
en una tabla InnoDB arrojará una advertencia, excepto la página del manual ALTER TABLE
. Es ese tipo de cosas que necesito saber antes de convertir. Pensé que estaría bien con mis consultas, pero aparentemente no.
11
Creo que el mayor problema sería que innodb es transaccional. Querrá saber si las bibliotecas MySQL que utilizan sus aplicaciones auto_commit por defecto o no.
Python , por ejemplo, no se confirma automáticamente. Esto significa que si una aplicación estaba insertando una fila justo antes de cerrar su conexión, esa inserción ahora se revertiría después de modificar a innodb. El script de Python, por ejemplo, debería asegurarse de llamar a connection.commit ();
Otro punto de diferencia podría estar alrededor de las inserciones o actualizaciones de varias filas. Considere una sola inserción de varias filas
Tenga en cuenta lo que sucede si hay algún tipo de error, como una colisión de clave única en la fila 3. Con MyISAM, las dos primeras filas se habrían escrito, bajo innodb todas las filas que se están escribiendo se revertirán sin dejar nada escrito ni siquiera en el caso de tal error.
Con innodb entrarás en el mundo de los callejones sin salida. Estos no son inherentemente malos a menos que ocurran con tanta frecuencia para evitar que se realice cualquier trabajo. Sin embargo, sus aplicaciones deberán codificarse de tal manera que anticipen los interbloqueos y los manejen adecuadamente (lo que probablemente significa simplemente volver a intentarlo).
Considere las limitaciones de memoria / almacenamiento. Innodb requiere muchos más recursos que MyISAM. Si tiene suficiente RAM para mantener sus agrupaciones de almacenamiento intermedio lo suficientemente grandes como para acomodar todas sus tablas, entonces está dorado.
Busque tablas que tengan claves principales grandes. La indexación en clúster de Innodb significa que cada índice secundario contiene otra copia de la PK de la fila correspondiente. Si tiene 2 índices secundarios, eso significa que cada fila PK se almacena 3 veces (PK + cada índice). Si el pk se extiende a través de varias columnas y tipos de datos grandes (char (N), por ejemplo), puede ver cómo los requisitos de índice pueden explotar rápidamente en innodb.
fuente