sql >> Base de Datos >  >> RDS >> Mysql

InnoDB o MyISAM - ¿Por qué no ambos?

Puede tener tablas MyISAM e InnoDB en la misma base de datos. Sin embargo, lo que encontrará cuando tenga tablas muy grandes es que MyISAM podría causar problemas de bloqueo de tablas. Lo que esto hace en última instancia es bloquear toda la tabla para una sola transacción, lo cual es muy malo si tiene muchos usuarios que utilizan su sitio web. Por ejemplo, si tiene un usuario que busca algo en su sitio y la consulta tarda unos minutos en completarse, ningún otro usuario podrá usar su sitio durante ese período porque toda la tabla está bloqueada.

InnoDB, por otro lado, usa el bloqueo a nivel de fila, lo que significa que esa fila es la única fila bloqueada de la tabla durante una transacción. InnoDB puede ser más lento en las búsquedas porque no ofrece búsquedas de texto completo como MyISAM, pero eso no es un gran problema cuando lo compara con el bloqueo a nivel de tabla de MyISAM. Si usa InnoDB, como muchos sitios grandes, entonces podría usar un motor de búsqueda del lado del servidor como Sphinx para búsquedas de texto completo. O incluso podría usar una tabla MyISAM para realizar la búsqueda como f00 sugirió. Personalmente, recomendé InnoDB principalmente por la función de bloqueo a nivel de fila, pero también porque puede implementar la búsqueda de texto completo de muchas otras maneras.

Básicamente, si tiene una aplicación de tablero de mensajes con muchas selecciones, inserciones y actualizaciones, InnoDB es probablemente la opción generalmente adecuada. Pero si no está creando algo así (o cualquier otra cosa con usuarios registrados) y su trabajo principalmente con contenido estático (o más lecturas que escrituras), entonces podría usar MyISAM.