¿Qué es InnoDB y MyISAM en MySQL?


¿Qué es InnoDB y MyISAM en MySQL ?

Author: naXa, 2010-09-29

6 answers

InnoDB y MYISAM, son motores de almacenamiento para MySQL.

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

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

 74
Author: Siva,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-10 00:43:46

Echa un vistazo a

InnoDB y MyISAM

InnoDB es un motor de almacenamiento para MySQL, incluido como estándar en todos los binarios distribuidos por MySQL AB. Su mejora principal sobre otro almacenamiento motores disponibles para su uso con MySQL is ACID-compliant transaction support

MyISAM es el motor de almacenamiento predeterminado para la base de datos relacional MySQL versiones del sistema de gestión anteriores a 5.5 1. Se basa en el antiguo ISAM código pero tiene muchas extensiones útiles. La principal deficiencia de MyISAM es la ausencia de soporte de transacciones. Versiones de MySQL 5.5 y más cambiar al motor InnoDB a garantizar la integridad referencial restricciones y mayor concurrencia.

 33
Author: Adriaan Stander,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-29 04:41:03

Son motores de almacenamiento.

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

MyISAM: El motor de almacenamiento MySQL predeterminado y el que más se usa en la Web, el almacenamiento de datos y otros entornos de aplicaciones. 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 por defecto.

InnoDB: Un motor de almacenamiento seguro para transacciones (compatible con ACID) para MySQL que tiene capacidades de commit, rollback y crash-recovery para proteger los datos del usuario. El bloqueo de nivel de fila InnoDB (sin escalamiento a bloqueos de granularidad más gruesos) y las lecturas consistentes sin bloqueo al estilo de Oracle aumentan la concurrencia y el rendimiento de múltiples usuarios. InnoDB almacena datos de usuario en índices agrupados para reducir E / S para consultas comunes basadas en claves primarias. Para mantener la integridad de los datos, InnoDB también admite restricciones de integridad referencial de clave EXTERNA.

 17
Author: mluebke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-29 04:40:43

Quería añadir que tener la capacidad de especificar un motor de almacenamiento específico por tabla es una de las fortalezas clave de MySQL (además de fácil de usar y buen rendimiento sin ajustes). Para todas las operaciones donde se necesitan transacciones, simplemente siga con InnoDB. Sin embargo, MyISAM realmente puede acelerar las cosas cuando las transacciones no son necesarias en ciertas situaciones, y requiere menos espacio en disco y RAM en comparación con InnoDB.

Dicho esto, InnoDB está mejorando todos los hora:

InnoDB 1.1 Mejoras de Rendimiento y escalabilidad

 5
Author: Damir Bulic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-02 11:41:27

MyISAM no sigue ACID a diferencia de InnoDB, que sigue las transacciones para mantener la integridad de los datos.

MyISAM soporta inserciones concurrentes: Si una tabla no tiene bloques libres en en el centro del archivo de datos, puede INSERTAR nuevas filas en el al mismo tiempo que otros hilos están leyendo de la tabla. MySqlDoc

Es por eso que MyISAM es más rápido y ocupa menos espacio. Por ejemplo, el motor de almacenamiento MySQL MyISAM no admite tranacciones. restricciones de MySQL MYISAM Hay un bit llamado concurrent-insert De forma predeterminada, la variable se establece en 1 y las inserciones simultáneas se manejan como se acaba de describir. Si se establece en 0, se deshabilitan las inserciones simultáneas. Si se establece en 2, se permiten inserciones simultáneas al final de la tabla incluso para tablas que han eliminado filas. Se puede ejecutar una instrucción INSERT para agregar filas al final de la tabla con select al mismo tiempo si no hay agujeros/filas eliminadas en centro 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 bloqueo de nivel de fila mientras que MyISAM solo puede usar bloqueo de nivel de tabla, por eso InnoDB tiene crash revovery es mejor que MyISAM. Uno tiene que adquirir manualmente el bloqueo de nivel de tabla en MyISAM si quiere evitar los efectos de concurrencia.

 4
Author: hi.nitish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-24 13:40:57

InnoDB es el valor predeterminado NO MyISAM https://dev.mysql.com/doc/refman/5.7/en/innodb-introduction.html "InnoDB es el motor de almacenamiento MySQL predeterminado. A menos que haya configurado un motor de almacenamiento predeterminado diferente, emitir una instrucción CREATE TABLE sin una cláusula ENGINE= crea una tabla InnoDB "

 1
Author: adwairi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-12 22:32:42