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

MySQL contra MariaDB

MySQL frente a MariaDB

La historia de fondo de MySQL y MariaDB

MySQL y MariaDB comparten una historia común, ambos llevan el nombre de las hijas del desarrollador Michael Widenius, My y Maria. MySQL fue creado en 1995 por una empresa de software sueca, MySQL AB . Creció en popularidad a lo largo de los años y se convirtió en el estándar para el sistema de gestión de bases de datos relacionales de código abierto. En 2008, Sun compró MySQL AB (y, en última instancia, MySQL) por mil millones de dólares. No mucho después de que Oracle comprara Sun en abril de 2009. En ese momento, Oracle, un sistema de base de datos de la competencia, se convirtió en propietario de MySQL. Esto molestó a los desarrolladores originales al ver cómo sentían que el futuro de MySQL estaba en peligro. Siguiendo las reglas del código abierto, decidieron "bifurcar" MySQL y crear MariaDB. ¡Y ahí lo tienes, MySQL y MariaDB comparten una historia!

Tenemos un excelente tutorial sobre cómo instalar MariaDB para reemplazar MySQL en WHM.

Control de versiones de replicación de MySQL y MariaDB

Esclavo↓ Maestro→ MariaDB-5.5 MariaDB-10.0 MariaDB-10.1 MariaDB-10.2 MySQL-5.6 MySQL-5.7 MySQL-8.0
MariaDB-5.5 Está bien No No No No No No
MariaDB-10.0 Está bien Está bien Está bien
MariaDB-10.1 Está bien Está bien Está bien Está bien
MariaDB-10.2 Está bien Está bien Está bien Está bien Está bien Está bien

Comparación de características de MySQL y MariaDB

Más motores de almacenamiento

MariaDB contiene los motores de almacenamiento estándar MyISAM, BLACKHOLE, CSV, MEMORY, ARCHIVE y MERGE. También incluye algunos de los motores de almacenamiento menos comunes como;

  • Casandra (MariaDB 10.0)
  • Araña (MariaDB 10.0+)
  • SECUENCIA (MariaDB 10.0+)
  • CONECTAR (MariaDB 10.0+)
  • TokuDB (MariaDB 5.5+)
  • SphinxSE (MariaDB 5.2+)
  • OQGRAPH (no disponible en MariaDB 5.5)
  • FederatedX (Reemplazo directo de Federated)
  • Aria (reemplazo de MyISAM con almacenamiento en caché mejorado)
  • MyRocks (motor de almacenamiento MariaDB 10.2 con compresión mejorada)
  • ColumnStore (un motor de almacenamiento orientado a columnas optimizado para almacenamiento de datos)

Mejoras de velocidad

MariaDB tiene muchas mejoras mejoradas sobre MySQL al comparar la función Optimizer:

Característica MariaDB 5.3/5.5 MariaDB 10.0 MySQL 5.5 MySQL 5.6
Optimizaciones de acceso al disco
Inserción de condición de índice (ICP)
Lectura de rango múltiple de barrido de disco (DS-MRR)
DS-MRR con recuperación ordenada por clave
Index_merge / Sort_intersection
Elección de rango basada en costos vs. index_merge
ORDENAR POR... LÍMITE
Usar claves primarias extendidas (ocultas) para innodb/xtradb SÍ (5.5)
Únete a optimizaciones
Acceso de clave por lotes (BKA)
Bloquear unión hash
Límites de memoria establecidos por el usuario en todos los búferes de unión
Aplicar condiciones ON de tabla exterior temprana
Condiciones de rechazo nulo probadas antes de NULL
Optimizaciones de subconsultas
In-to-exists
Semi-unión
Materialización
Materialización consciente de NULL
Elección de costo de materialización vs. dentro de existencia
Caché de subconsulta
Explicación rápida con subconsultas
EXISTE-a-ENTRADA
Optimización para tablas/vistas derivadas
Retraso en la materialización de tablas derivadas/vistas materializadas
EXPLICACIÓN instantánea para tablas derivadas
Tabla derivada con optimización de claves
Campos de vistas combinables y tablas derivadas utilizadas en optimizaciones de igualdad
Control de ejecución
LÍMITE DE FILAS EXAMINADAS rows_limit SÍ (5.5)
Control optimizador (interruptor optimizador)
Control sistemático de todas las estrategias del optimizador parcial
EXPLICAR mejoras
Explicación para ELIMINAR, INSERTAR, REEMPLAZAR y ACTUALIZAR Parcial
EXPLICAR en formato JSON
EXPLICACIÓN más detallada y consistente para subconsultas
Rastreo del optimizador
Seguimiento del optimizador

  • Replicación en paralelo — nuevo en 10.0; se lleva a cabo en tres partes:el subproceso de E/S lee los eventos de replicación y los pone en cola en el registro de retransmisión, el subproceso de SQL los obtiene individualmente del registro de retransmisión, y cada evento se aplica en el esclavo replicando los cambios en el maestro.
  • Las mejoras de rendimiento incluyen un mejor subsistema de E/S asíncrono InnoDB en Windows.
  • Los índices para el motor MEMORY(HEAP) son más rápidos. Las últimas correcciones se aplicaron en MariaDB 5.5 y MySQL 5.7.
  • Se agregó caché de clave segmentada para MyISAM en MariaDB 5.2. Esto ha mejorado el rendimiento en las tablas MyISAM hasta 4 veces.
  • A partir de la versión 10.0.13, el tamaño de hash ajustable para MyISAM y Aria mejora el tiempo de apagado si usa muchas tablas MyISAM/Aria con claves retrasadas.
  • Con la TABLA CHECKSUM usando la opción QUICK se mejora la velocidad.
  • Se mejoró el rendimiento con las conversiones de conjuntos de caracteres y la eliminación de conversiones (cuando no eran necesarias). La mejora general de la velocidad es de aproximadamente un 1-5 %, pero puede ser más rápida con grandes conjuntos de resultados.
  • Pool of Threads en MariaDB 5.1/MariaDB 5.5 permite que MariaDB se ejecute con más de 200 000 conexiones, lo que mejora la velocidad cuando se usan muchas conexiones.
  • Se agregaron mejoras en la conexión del cliente a partir de MariaDB 10.1 y MariaDB 10.2.
  • Algunas mejoras en el código DBUG dentro de MariaDB ayudan a que el código se ejecute más rápido con la depuración compilada, pero no utilizada.
  • Usar el motor de almacenamiento Aria con tablas temporales internas permite mejorar el rendimiento.
  • El conjunto de pruebas se ejecuta más rápido incluso con la lista de pruebas extendida.

Nuevas funciones y extensiones

Mejores pruebas

MariaDB contiene más pruebas en el conjunto de pruebas que MySQL. Se han eliminado las pruebas no válidas y las innecesarias. Se han solucionado los problemas con el conjunto de pruebas.

Menos errores

Actualmente, la comunidad de MariaDB está alerta y trabaja para corregir errores de la manera más rápida y completa posible. Además, las advertencias del compilador también se han reducido como resultado de la reducción de errores.

Código abierto

Todo el código fuente de MariaDB se publica bajo GPL, LGPL o BSD. Mientras que MySQL tiene módulos de código cerrado en su Enterprise Edition, MariaDB no tiene ningún módulo de código cerrado. MariaDB incluyó todas las funciones de código cerrado contenidas en MySQL 5.5 Enterprise Edition en su versión de código abierto. MariaDB incluye casos de prueba para todos los nuevos errores corregidos. MySQL no proporciona casos de prueba para errores corregidos en MySQL 5.5. MariaDB hace públicos todos los planes de desarrollo futuros, incluidos los errores y sus correcciones. MariaDB tiene una gran comunidad y esa comunidad de desarrolladores incluye una amplia variedad de colaboradores, mientras que todas las confirmaciones de MySQL parecen ser de empleados de Oracle. Las bibliotecas de cliente de MySQL se publican bajo la licencia GPL que prohíbe la vinculación a aplicaciones de código cerrado. Por el contrario, MariaDB otorga licencias de bibliotecas de clientes bajo la licencia LGPL que permite la vinculación a software de código cerrado.

Problemas de compatibilidad entre MariaDB y MySQL

MariaDB se diseñó para ser un reemplazo directo de MySQL y era una bifurcación del código base original de MySQL. Esto significa que cambiar de MySQL a MariaDB es un proceso relativamente sencillo. Simplemente desinstala MySQL e instala MariaDB. Dado que es un reemplazo directo, no hay necesidad de convertir ningún dato. Los desarrolladores de MariaDB realizan una combinación mensual del código MySQL para garantizar que sigan siendo compatibles. Existen diferentes incompatibilidades entre las versiones de MySQL y MariaDB, aunque las versiones están diseñadas para ser compatibles por sus respectivos números de versión (por ejemplo, MySQL 5.1 -> MariaDB 5.1 y MySQL 5.5 -> MariaDB 5.5).

Incompatibilidades entre MariaDB 10.0 y MariaDB 5.5 / MySQL 5.5

  • La sintaxis SET OPTION está obsoleta en MariaDB 10.0 y MySQL 5.6. Use solo SET.

Incompatibilidades entre MariaDB 10.0 y MySQL 5.6

  • Todos los archivos binarios de MySQL (MySQLd, myisamchk, etc.) muestran una advertencia si se usa el prefijo de una opción (como –big-table en lugar de –big-tables). Los binarios de MariaDB funcionan de la misma manera que la mayoría de los otros comandos de Unix y no dan advertencias cuando se usan prefijos únicos.
  • MariaDB GTID no es compatible con MySQL 5.6. Esto significa que uno no puede tener MySQL 5.6 como esclavo para MariaDB 10.0. Sin embargo, MariaDB 10.0 puede ser un esclavo de MySQL 5.6 o cualquier versión anterior de MySQL/MariaDB.
  • La replicación de múltiples fuentes de MariaDB 10.0 no es compatible con MySQL 5.6.
  • Las columnas dinámicas de MariaDB 10.0 no son compatibles con MySQL 5.6.
  • Para hacer que CREATE TABLE... SELECT funcione de la misma manera en la replicación basada en declaraciones y en filas, se ejecuta de forma predeterminada como CREATE OR REPLACE TABLE en el esclavo. Un beneficio de esto es que si el esclavo muere en medio de CREAR... SELECCIONAR, podrá continuar.
  • Se puede usar la variable slave-ddl-exec-mode para especificar cómo se replican CREATE TABLE y DROP TABLE.
  • Vea también un desglose detallado de las diferencias de variables del sistema entre MariaDB 10.0 y MySQL 5.6.
  • MySQL 5.6 tiene el esquema de rendimiento habilitado de forma predeterminada. Por motivos de rendimiento MariaDB 10.0 lo tiene deshabilitado por defecto. Puede habilitarlo iniciando MySQLd con la opción –performance-schema.
  • MariaDB 10.0 no es compatible con el complemento MySQL Memcached.
  • Los usuarios creados con el algoritmo de contraseña SHA256 de MySQL no se pueden usar en MariaDB 10.0.
  • MariaDB 10.0 no es compatible con la replicación retrasada:MDEV-7145.

Incompatibilidades entre MariaDB 10.1 y MySQL 5.7

  • MariaDB 10.1 no es compatible con JSON de MySQL 5.7.
  • El cifrado InnoDB de MariaDB 10.1 se implementa de manera diferente al cifrado InnoDB de MySQL 5.7.
  • MariaDB 10.1 no es compatible con los complementos de analizador de texto completo ngram y MeCab:MDEV-10267, MDEV-10268.
  • MariaDB 10.1 no admite múltiples disparadores para una tabla:MDEV-6112.
  • MariaDB 10.1 no es compatible con CREATE TABLESPACE para InnoDB.

Incompatibilidades entre MariaDB 10.2 y MySQL 5.7

  • Diferencias de variables del sistema entre MariaDB 10.2 y MySQL 5.7.
  • Diferencias de funciones entre MariaDB 10.2 y MySQL 5.7.
  • Se agregaron múltiples disparadores por tabla en 10.2
  • El cifrado MariaDB InnoDB se implementa de manera diferente al cifrado InnoDB de MySQL 5.7.
  • MariaDB almacena JSON como texto verdadero, no en formato binario como MySQL. La razón es que nuestras funciones JSON son mucho más rápidas que las de MySQL, por lo que no necesitamos ver la necesidad de almacenar cosas en formato binario, ya que agrega mucha complejidad al manipular objetos JSON.
  • MariaDB 10.2 no es compatible con los complementos de analizador de texto completo ngram y MeCab:MDEV-10267, MDEV-10268.
  • MariaDB 10.2 no es compatible con el complemento MySQL X.
  • MariaDB 10.2 no es compatible con los espacios de tablas generales de MySQL.
  • Consulte también Incompatibilidades entre MariaDB 10.1 y MySQL 5.7.