2010-09-29 9 views
77

¿Qué es InnoDB y MyISAM en MySQL?¿Qué es InnoDB y MyISAM en MySQL?

+6

Duplicado de [MySql: MyISAM vs. Inno DB!] (Http://stackoverflow.com/questions/277440/mysql-myisam-vs-inno-db), o puede elegir: http://stackoverflow.com/search? q = myisam + vs + innodb –

+0

Es el motor de la base de datos ... http://www.kavoir.com/2009/09/mysql-engines-innodb-vs-myisam-a-comparison-of-pros- and-cons.html – Matthieu

+0

¿podemos utilizar ambos motores de almacenamiento al mismo tiempo para nuestra base de datos? – user130561

Respuesta

64

InnoDB y MYISAM, son motores de almacenamiento para MySQL.

Estos dos difieren en su implementación de bloqueo: InnoDB bloquea la fila en particular en la tabla, y MyISAM bloquea la tabla completa MySQL.

Puede especificar el tipo dando MYISAM O InnoDB mientras crea una tabla en DB.

16

Son motores de almacenamiento.

http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html

MyISAM: El motor de almacenamiento por defecto de MySQL y el que más se utiliza en Web, almacenamiento de datos y otros entornos de aplicación. MyISAM es compatible con todas las configuraciones de MySQL, y es el motor de almacenamiento predeterminado a menos que haya configurado MySQL para usar uno diferente de forma predeterminada.

InnoDB: Un motor de almacenamiento seguro para transacciones (compatible con ACID) para MySQL que tiene funciones de compromiso, retrotracción y recuperación de fallos para proteger los datos del usuario. El bloqueo de nivel de fila de InnoDB (sin escalar a bloqueos de granularidad más gruesos) y las lecturas de no bloqueo consistentes de estilo de Oracle aumentan la concurrencia y el rendimiento de múltiples usuarios. InnoDB almacena datos de usuario en índices agrupados para reducir la E/S en consultas comunes basadas en claves primarias. Para mantener la integridad de los datos, InnoDB también admite restricciones de integridad referencial de FOREIGN KEY.

+0

Entonces, mientras instalamos MySQL, necesitamos especificar específicamente qué motor de almacenamiento usar como nuestra base de datos MySQL ? – user130561

+3

Como mencioné en mi publicación, el valor predeterminado es MyISAM. Si desea utilizar las características de un motor de almacenamiento diferente, como INNODB, entonces sí, deberá especificarlo. Esto no se hace durante la instalación, sino que se realiza durante la creación de la tabla inicial. – mluebke

+2

Pero según esto: - http://dev.mysql.com/doc/refman/5.7/en/storage-engines.html; El motor predeterminado es InnoDB. – Harsha

31

Tenga una mirada en

InnoDB y MyISAM

InnoDB es un motor de almacenamiento de MySQL, incluido de serie en todas las actuales binarios distribuidos por MySQL AB. Su mejora principal sobre otro almacenamiento motores disponibles para su uso con MySQL es soporte de transacciones ACID compatible

MyISAM es el motor de almacenamiento predeterminado para las versiones relacional sistema de gestión de base de datos MySQL antes de 5,5 1. Se basa en el código ISAM anterior pero tiene muchas extensiones útiles. La principal deficiencia de MyISAM es la ausencia de soporte de transacciones. Las versiones de MySQL 5.5 y posteriores tienen conmutadas al motor InnoDB a aseguran la integridad referencial restricciones y mayor concurrencia.

+0

¿podemos usar ambos motores de almacenamiento al mismo tiempo para nuestra base de datos? – user130561

+2

puede, porque para cada tabla puede definir un motor de almacenamiento diferente. otra pregunta es si deberías. en la documentación de mysql hay algunas explicaciones sobre este tema. – nano7

4

Quería agregar que tener la capacidad de especificar un motor de almacenamiento específico por mesa es uno de los puntos fuertes de MySQL (además de fácil de usar y buen rendimiento sin ajustes). Para todas las operaciones donde se necesitan transacciones, simplemente quédese con InnoDB. Sin embargo, MyISAM realmente puede acelerar las cosas cuando las transacciones no son necesarias en ciertas situaciones, y requiere menos espacio de disco y memoria RAM que InnoDB.

Dicho esto, InnoDB está mejorando todo el tiempo:

InnoDB 1.1 Performance and Scalability Enhancements

3

MyISAM no sigue ACID en comparación con InnoDB que sigue transacciones para mantener la integridad de los datos.

MyISAM soporta inserciones concurrentes: Si una tabla tiene bloques libres en el medio del archivo de datos, que se pueden insertar nuevas filas en que en el mismo tiempo que otros hilos están leyendo de la tabla. MySqlDoc

Por eso, MyISAM es más rápido y ocupa menos espacio. Por ejemplo, MySQL MyISAM Storage Engine no admite tranactions. constraints of MySQL MYISAM Se llama un poco concurrent-insert De manera predeterminada, la variable se establece en 1 y las inserciones concurrentes se manejan tal como se acaba de describir. Si se establece en 0, las inserciones simultáneas están deshabilitadas. Si se establece en 2, las inserciones simultáneas al final de la tabla están permitidas incluso para las tablas que tienen filas eliminadas. Se puede ejecutar una instrucción INSERT para agregar filas al final de la tabla con seleccionar al mismo tiempo si no hay agujeros/filas eliminadas en el medio de la tabla (en el momento de la inserción concurrente).

El nivel de aislamiento predeterminado og mysql InnoDB es "Read Repeatable". Para MyISAM, no hay transacción. InnoDB usa el bloqueo de nivel de fila, mientras que MyISAM solo puede usar el bloqueo de nivel de tabla, por eso InnoDB tiene la recuperación de bloqueo es mejor que MyISAM. Uno tiene que adquirir manualmente el bloqueo de nivel de tabla en MyISAM si uno quiere evitar los efectos de concurrencia.

1

InnoDB es el NO por defecto myisam https://dev.mysql.com/doc/refman/5.7/en/innodb-introduction.html "InnoDB es el motor de almacenamiento de MySQL por defecto. A menos que haya configurado un motor de almacenamiento predeterminado diferente, la emisión de una instrucción create table sin motor = cláusula crea una tabla InnoDB"

+3

Verá, en 2010 el valor predeterminado puede haber sido diferente ... – mustaccio

Cuestiones relacionadas