Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL contre MariaDB

MySQL contre MariaDB

L'histoire de MySQL et MariaDB

MySQL et MariaDB partagent une histoire commune, les deux portent le nom des filles du développeur Michael Widenius, My et Maria. MySQL a été créé en 1995 par une société de logiciels suédoise, MySQL AB . Il a gagné en popularité au fil des ans et est devenu la norme pour le système de gestion de base de données relationnelle open source. En 2008, Sun a acheté MySQL AB (et finalement MySQL) pour 1 milliard de dollars. Peu de temps après l'achat de Sun par Oracle en avril 2009. À ce stade, Oracle, un système de base de données concurrent, est devenu propriétaire de MySQL. Cela a dérangé les développeurs d'origine en voyant à quel point ils pensaient que l'avenir de MySQL était en danger. Suivant les règles de l'open source, ils ont décidé de "forker" MySQL et de créer MariaDB. Et voilà, MySQL et MariaDB partagent un historique !

Nous avons un excellent tutoriel sur la façon d'installer MariaDB pour remplacer MySQL dans WHM.

Gestion des versions de la réplication MySQL et MariaDB

Esclave↓ Maître→ MariaDB-5.5 MariaDB-10.0 MariaDB-10.1 MariaDB-10.2 MySQL-5.6 MySQL-5.7 MySQL-8.0
MariaDB-5.5 D'accord Non Non Non Non Non Non
MariaDB-10.0 D'accord D'accord D'accord
MariaDB-10.1 D'accord D'accord D'accord D'accord
MariaDB-10.2 D'accord D'accord D'accord D'accord D'accord D'accord

Comparaison des fonctionnalités de MySQL et MariaDB

Plus de moteurs de stockage

MariaDB contient les moteurs de stockage standard MyISAM, BLACKHOLE, CSV, MEMORY, ARCHIVE et MERGE. Il inclut également certains des moteurs de stockage les moins courants tels que ;

  • Cassandre (MariaDB 10.0)
  • Araignée (MariaDB 10.0+)
  • SÉQUENCE (MariaDB 10.0+)
  • CONNECTER (MariaDB 10.0+)
  • TokuDB (MariaDB 5.5+)
  • SphinxSE (MariaDB 5.2+)
  • OQGRAPH (non disponible dans MariaDB 5.5)
  • FederatedX (en remplacement de Federated)
  • Aria (remplacement de MyISAM avec mise en cache améliorée)
  • MyRocks (moteur de stockage MariaDB 10.2 avec compression améliorée)
  • ColumnStore (un moteur de stockage orienté colonne optimisé pour l'entreposage de données)

Améliorations de la vitesse

MariaDB a de nombreuses améliorations améliorées par rapport à MySQL lors de la comparaison de la fonctionnalité Optimizer :

Fonctionnalité MariaDB 5.3/5.5 MariaDB 10.0 MySQL 5.5 MySQL 5.6
Optimisations d'accès au disque
Repoussée des conditions d'index (ICP) OUI OUI OUI
Lecture multi-gamme par balayage de disque (DS-MRR) OUI OUI OUI
DS-MRR avec récupération ordonnée par clé OUI OUI
Index_merge / Sort_intersection OUI OUI
Choix de la plage basé sur le coût par rapport à index_merge OUI OUI
ORDER PAR … LIMITE OUI OUI
Utiliser des clés primaires étendues (cachées) pour innodb/xtradb OUI (5.5) OUI
Joindre les optimisations
Accès par lots de clés (BKA) OUI OUI OUI
Bloquer la jointure par hachage OUI OUI
Limites de mémoire définies par l'utilisateur sur tous les tampons de jointure OUI OUI
Appliquer les conditions ON de la table externe précoce OUI OUI
Conditions de rejet de NULL testées tôt pour les NULL OUI OUI
Optimisations des sous-requêtes
In-to-existe OUI OUI OUI OUI
Semi-jointure OUI OUI OUI
Matérialisation OUI OUI OUI
Matérialisation compatible NULL OUI OUI
Choix du coût de la matérialisation par rapport à l'in-to-exists OUI OUI OUI
Cache de sous-requêtes OUI OUI
Explication rapide avec des sous-requêtes OUI OUI
EXISTS-to-IN OUI
Optimisation pour les tables/vues dérivées
Matérialisation retardée des tables dérivées / vues matérialisées OUI OUI OUI
EXPLAIN instantané pour les tables dérivées OUI OUI OUI
Table dérivée avec optimisation des clés OUI OUI OUI
Champs des vues fusionnables et tables dérivées utilisées dans les optimisations d'égalité OUI OUI
Contrôle d'exécution
LIMITER LES LIGNES EXAMINÉES rows_limit OUI (5.5) OUI
Contrôle de l'optimiseur (commutateur de l'optimiseur)
Contrôle systématique de toutes les stratégies d'optimisation OUI OUI partielle
EXPLIQUER les améliorations
Expliquer pour DELETE, INSERT, REPLACE et UPDATE Partiel OUI
EXPLIQUER au format JSON OUI
EXPLAIN plus détaillé et cohérent pour les sous-requêtes OUI OUI
Traçage de l'optimiseur
Traçage de l'optimiseur OUI

  • Réplication parallèle — nouveau dans 10.0 ; se déroule en trois parties :les événements de réplication sont lus par le thread IO et mis en file d'attente dans le journal de relais, récupérés individuellement par le thread SQL à partir du journal de relais, et chaque événement est appliqué sur l'esclave en répliquant les modifications sur le maître.
  • Les améliorations de performances incluent un meilleur sous-système d'E/S asynchrones InnoDB sous Windows.
  • Les index pour le moteur MEMORY(HEAP) sont plus rapides. Les derniers correctifs ont été appliqués dans MariaDB 5.5 et MySQL 5.7.
  • Le cache de clé segmenté pour MyISAM a été ajouté dans MariaDB 5.2. Cela a amélioré les performances dans les tables MyISAM jusqu'à 4x.
  • Depuis la version 10.0.13, la taille de hachage ajustable pour MyISAM et Aria améliore le temps d'arrêt si vous utilisez de nombreuses tables MyISAM/Aria avec des clés retardées.
  • Avec la CHECKSUM TABLE utilisant l'option QUICK, la vitesse est améliorée.
  • Les performances ont été améliorées avec les conversions de jeux de caractères et la suppression des conversions (lorsqu'elles n'étaient pas nécessaires). L'amélioration globale de la vitesse est d'environ 1 à 5 %, mais peut être plus rapide avec de grands ensembles de résultats.
  • Le pool de threads dans MariaDB 5.1/MariaDB 5.5 permet à MariaDB de fonctionner avec plus de 200 000 connexions, ce qui améliore la vitesse lors de l'utilisation de nombreuses connexions.
  • Améliorations de la connexion client ajoutées à partir de MariaDB 10.1 et MariaDB 10.2.
  • Certaines améliorations apportées au code DBUG dans MariaDB permettent d'accélérer l'exécution du code avec le débogage compilé, mais non utilisé.
  • L'utilisation du moteur de stockage Aria à l'aide de tables temporaires internes permet d'améliorer les performances.
  • La suite de tests s'exécute plus rapidement même avec la liste de tests étendue.

Nouvelles fonctionnalités et extensions

Meilleurs tests

MariaDB contient plus de tests dans la suite de tests que MySQL. Les tests invalides et inutiles ont été supprimés. Les problèmes avec la suite de tests ont été corrigés.

Moins de bogues

Actuellement, la communauté MariaDB est en alerte et s'efforce de corriger les bugs aussi rapidement et aussi complètement que possible. De plus, les avertissements du compilateur ont également été réduits en raison de la réduction des bogues.

Open Source

Tout le code source de MariaDB est publié sous GPL, LGPL ou BSD. Alors que MySQL a des modules à source fermée dans son édition Enterprise, MariaDB n'a pas de modules à source fermée. MariaDB a inclus toutes les fonctionnalités de source fermée contenues dans MySQL 5.5 Enterprise Edition dans leur version open source. MariaDB inclut des cas de test pour tous les nouveaux bogues corrigés. MySQL ne fournit pas de cas de test pour les bogues corrigés dans MySQL 5.5. MariaDB rend publics tous les futurs plans de développement, y compris les bogues et leurs correctifs. MariaDB a une grande communauté et cette communauté de développeurs comprend une grande variété de contributeurs alors que tous les engagements envers MySQL semblent provenir d'employés d'Oracle. Les bibliothèques clientes MySQL sont publiées sous la licence GPL qui interdit la liaison à des applications à source fermée. Au contraire, MariaDB octroie des licences aux bibliothèques clientes sous la licence LGPL permettant la liaison à des logiciels à source fermée.

Problèmes de compatibilité entre MariaDB et MySQL

MariaDB a été conçu pour remplacer MySQL et était un fork de la base de code MySQL d'origine. Cela signifie que lors du passage de MySQL à MariaDB, le processus est relativement simple. Vous désinstallez simplement MySQL et installez MariaDB. Puisqu'il s'agit d'un remplacement instantané, il n'est pas nécessaire de convertir des données. Les développeurs de MariaDB effectuent une fusion mensuelle du code MySQL pour s'assurer qu'ils restent compatibles. Il existe différentes incompatibilités entre les versions de MySQL et MariaDB même si les versions sont conçues pour être compatibles par leurs numéros de version respectifs (par exemple MySQL 5.1 -> MariaDB 5.1 &MySQL 5.5 -> MariaDB 5.5).

Incompatibilités entre MariaDB 10.0 &MariaDB 5.5 / MySQL 5.5

  • La syntaxe SET OPTION est obsolète dans MariaDB 10.0 et MySQL 5.6. Utilisez simplement SET.

Incompatibilités entre MariaDB 10.0 et MySQL 5.6

  • Tous les binaires MySQL (MySQLd, myisamchk etc.) donnent un avertissement si l'on utilise un préfixe d'option (comme –big-table au lieu de –big-tables). Les binaires MariaDB fonctionnent de la même manière que la plupart des autres commandes Unix et ne donnent pas d'avertissements lors de l'utilisation de préfixes uniques.
  • MariaDB GTID n'est pas compatible avec MySQL 5.6. Cela signifie qu'on ne peut pas avoir MySQL 5.6 comme esclave pour MariaDB 10.0. Cependant, MariaDB 10.0 peut être un esclave de MySQL 5.6 ou de toute version antérieure de MySQL/MariaDB.
  • La réplication multi-sources MariaDB 10.0 n'est pas prise en charge dans MySQL 5.6.
  • Les colonnes dynamiques MariaDB 10.0 ne sont pas prises en charge par MySQL 5.6.
  • Pour que CREATE TABLE … SELECT fonctionne de la même manière dans la réplication basée sur les instructions et sur les lignes, il est exécuté par défaut en tant que CREATE OR REPLACE TABLE sur l'esclave. L'un des avantages de ceci est que si l'esclave meurt au milieu de CREATE … SELECT, il pourra continuer.
  • On peut utiliser la variable slave-ddl-exec-mode pour spécifier comment CREATE TABLE et DROP TABLE sont répliqués.
  • Consultez également une répartition détaillée des différences de variables système entre MariaDB 10.0 et MySQL 5.6.
  • MySQL 5.6 a un schéma de performances activé par défaut. Pour des raisons de performances, MariaDB 10.0 l'a désactivé par défaut. Vous pouvez l'activer en démarrant MySQLd avec l'option –performance-schema.
  • MariaDB 10.0 ne prend pas en charge le plug-in MySQL Memcached.
  • Les utilisateurs créés avec l'algorithme de mot de passe SHA256 de MySQL ne peuvent pas être utilisés dans MariaDB 10.0.
  • MariaDB 10.0 ne prend pas en charge la réplication différée – MDEV-7145.

Incompatibilités entre MariaDB 10.1 et MySQL 5.7

  • MariaDB 10.1 ne prend pas en charge le JSON de MySQL 5.7.
  • Le chiffrement InnoDB de MariaDB 10.1 est implémenté différemment du chiffrement InnoDB de MySQL 5.7.
  • MariaDB 10.1 ne prend pas en charge les plugins d'analyseur de texte intégral ngram et MeCab - MDEV-10267, MDEV-10268.
  • MariaDB 10.1 ne prend pas en charge plusieurs déclencheurs pour une table – MDEV-6112.
  • MariaDB 10.1 ne prend pas en charge CREATE TABLESPACE pour InnoDB.

Incompatibilités entre MariaDB 10.2 et MySQL 5.7

  • Différences des variables système entre MariaDB 10.2 et MySQL 5.7.
  • Différences fonctionnelles entre MariaDB 10.2 et MySQL 5.7.
  • Plusieurs déclencheurs par table ont été ajoutés dans la version 10.2
  • Le chiffrement MariaDB InnoDB est implémenté différemment du chiffrement InnoDB de MySQL 5.7.
  • MariaDB stocke JSON sous forme de texte vrai, et non au format binaire comme MySQL. La raison en est que nos fonctions JSON sont beaucoup plus rapides que celles de MySQL, nous n'avions donc pas besoin de voir le besoin de stocker des éléments au format binaire, car cela ajoute beaucoup de complexité lors de la manipulation d'objets JSON.
  • MariaDB 10.2 ne prend pas en charge les plug-ins d'analyseur de texte intégral ngram et MeCab :MDEV-10267, MDEV-10268.
  • MariaDB 10.2 ne prend pas en charge le plugin MySQL X.
  • MariaDB 10.2 ne prend pas en charge les espaces table généraux MySQL.
  • Voir également Incompatibilités entre MariaDB 10.1 et MySQL 5.7.