Comparación de motores de base de datos MySQL - Comparison of MySQL database engines

Esta es una comparación entre motores de bases de datos notables para el sistema de administración de bases de datos MySQL (DBMS). Un motor de base de datos (o "motor de almacenamiento") es el componente de software subyacente que utiliza un DBMS para crear, leer, actualizar y eliminar (CRUD) datos de una base de datos .

Nombre Vendedor Licencia Transaccional En desarrollo activo Versiones de MySQL Versiones de MariaDB
Archivo Oráculo GPL No 5.0 - presente 5.1 - presente
Aria MariaDB GPL No Ninguno 5.1 - presente
Berkeley DB Oráculo AGPLv3 No ? - 5.0 Ninguno
AGUJERO NEGRO Oráculo GPL No 5.0 - presente 5.1 - presente
CONECTAR MariaDB GPL No Ninguno 10.0 - presente
CSV Oráculo GPL No 5.0 - presente 5.1 - presente
Halcón Oráculo GPL No ? Ninguno
Federado Oráculo GPL ? No 5.0 - presente ?
FederatedX MariaDB GPL No Ninguno ? - regalo
ColumnStore (anteriormente InfiniDB) Calpont GPL Ninguno 10.5.4 - presente
InnoDB Oráculo GPL 3.23 - presente 5.1 - presente
MEMORIA Oráculo GPL No 3.23 - presente 5.1 - presente
Mroonga Proyecto Groonga GPL No Ninguno 10.0 - presente
MyISAM Oráculo GPL No No 3.23 - presente 5.1 - presente
MyRocks Facebook GPLv2 Ninguno 10.2 - presente
NDB Oráculo GPLv2 ? Ninguno
OQGRAPH Oráculo GPLv2 No No Ninguno 5.2 - presente
S3 MariaDB GPL No Ninguno 10,5 - presente
SECUENCIA MariaDB GPL No Ninguno 10.0 - presente
Esfinge Sphinx Technologies Inc. GPL No No Ninguno 5.2 - presente
ARAÑA Kentoku Shiba GPL Ninguno 10.0 - presente
TempTable Oráculo GPL No 8.0 - presente Ninguno
TokuDB Percona GPL modificada No Ninguno 5.5 - presente
XtraDB Percona GPL Ninguno 5.1 - 10.1

Comparación entre InnoDB y MyISAM

  1. InnoDB se recupera de un bloqueo u otro cierre inesperado al reproducir sus registros. MyISAM debe escanear completamente y reparar o reconstruir cualquier índice o posiblemente tabla que se haya actualizado pero no se haya descargado completamente en el disco. Dado que el enfoque de InnoDB es aproximadamente un tiempo fijo, mientras que el tiempo de MyISAM crece con el tamaño de los archivos de datos, InnoDB ofrece una mayor disponibilidad a medida que aumenta el tamaño de la base de datos.
  2. InnoDB, con innodb_flush_log_at_trx_commit establecido en 1, vacía el registro de transacciones después de cada transacción, mejorando enormemente la confiabilidad. MyISAM debe ejecutarse sobre un sistema de archivos completamente registrado , como ext4 montado con data = journal, para proporcionar la misma resistencia contra la corrupción de archivos de datos. (El diario se puede colocar en un dispositivo SSD para mejorar el rendimiento de MyISAM, de manera similar, el registro InnoDB se puede colocar en un sistema de archivos no registrado como ext2 ejecutándose en un SSD para un aumento de rendimiento similar. La confiabilidad no se sacrifica en ningún caso. )
  3. InnoDB se puede ejecutar en un modo en el que tiene menor confiabilidad pero, en algunos casos, mayor rendimiento. Establecer innodb_flush_log_at_trx_commit en 0 cambia a un modo en el que las transacciones no se confirman en el disco antes de que el control se devuelva al llamador. En cambio, los vaciados de disco ocurren con un temporizador.
  4. InnoDB agrupa automáticamente varias inserciones simultáneas y las descarga en el disco al mismo tiempo. MyISAM se basa en la caché de bloques del sistema de archivos para almacenar en caché las lecturas de las filas de datos y los índices, mientras que InnoDB lo hace dentro del propio motor, combinando las cachés de filas con las cachés de índice.
  5. InnoDB almacenará filas en el orden de clave principal si está presente, de lo contrario, el primer orden de clave única . Esto puede ser significativamente más rápido si se elige la clave para que sea buena para operaciones comunes. Si no hay una clave principal o clave única, InnoDB utilizará una clave entera única generada internamente y almacenará físicamente los registros en un orden de inserción aproximado, como lo hace MyISAM. Alternativamente, se puede usar un campo de clave primaria autoincrementable para lograr el mismo efecto.
  6. InnoDB proporciona almacenamiento de página comprimida LZW actualizable para datos e índices. Las tablas comprimidas de MyISAM no se pueden actualizar.
  7. Cuando se opera en modos totalmente compatibles con ACID , InnoDB debe realizar una descarga en el disco al menos una vez por transacción, aunque combinará descargas para inserciones de múltiples conexiones. Para discos duros o matrices típicas, esto impondrá un límite de aproximadamente 200 transacciones de actualización por segundo. Para las aplicaciones que requieren tasas de transacción más altas, se requerirán controladores de disco con almacenamiento en caché de escritura y respaldo de batería para mantener la integridad de las transacciones. InnoDB también ofrece varios modos que reducen este efecto, lo que naturalmente conduce a una pérdida de garantías de integridad transaccional, aunque aún conserva una mayor confiabilidad que MyISAM. MyISAM no tiene ninguno de estos gastos generales, pero solo porque no admite transacciones.
  8. MyISAM utiliza el bloqueo a nivel de tabla en las actualizaciones y elimina cualquier fila existente, con una opción para agregar nuevas filas en lugar de tomar un bloqueo e insertarlas en el espacio libre. InnoDB usa bloqueo a nivel de fila. Para aplicaciones de bases de datos grandes donde muchas filas se actualizan a menudo, el bloqueo a nivel de fila es crucial porque un solo bloqueo a nivel de tabla reduce significativamente la concurrencia en la base de datos.
  9. Tanto InnoDB como MyISAM admiten la búsqueda de texto completo , con InnoDB obteniendo soporte para índices de texto completo en MySQL 5.6.4, pero los resultados pueden ser notablemente diferentes.

Referencias

enlaces externos