Chapitre 16 Moteurs de stockage alternatifs

Les moteurs de stockage sont des composants MySQL qui gèrent les opérations SQL pour différents types de tables. InnoDB est le moteur de stockage par défaut et le plus polyvalent, et Oracle recommande de l’utiliser pour les tables, sauf dans des cas d’utilisation spécialisés. (L’instruction CREATE TABLE de MySQL 8.0 crée des tables InnoDB par défaut.)

MySQL Server utilise une architecture de moteur de stockage enfichable qui permet de charger et de décharger des moteurs de stockage dans un serveur MySQL en cours d’exécution.

Pour déterminer quels moteurs de stockage votre serveur prend en charge, utilisez l’instruction SHOW ENGINES. La valeur de la colonne Support indique si un moteur peut être utilisé. Une valeur de YES, NO ou DEFAULT indique qu’un moteur est disponible, non disponible ou disponible et actuellement défini comme moteur de stockage par défaut.

mysql> SHOW ENGINES\G*************************** 1. row *************************** Engine: PERFORMANCE_SCHEMA Support: YES Comment: Performance SchemaTransactions: NO XA: NO Savepoints: NO*************************** 2. row *************************** Engine: InnoDB Support: DEFAULT Comment: Supports transactions, row-level locking, and foreign keysTransactions: YES XA: YES Savepoints: YES*************************** 3. row *************************** Engine: MRG_MYISAM Support: YES Comment: Collection of identical MyISAM tablesTransactions: NO XA: NO Savepoints: NO*************************** 4. row *************************** Engine: BLACKHOLE Support: YES Comment: /dev/null storage engine (anything you write to it disappears)Transactions: NO XA: NO Savepoints: NO*************************** 5. row *************************** Engine: MyISAM Support: YES Comment: MyISAM storage engineTransactions: NO XA: NO Savepoints: NO...

Ce chapitre couvre les cas d’utilisation des moteurs de stockage MySQL à usage spécial. Il ne couvre pas le moteur de stockage par défaut InnoDB ou le moteur de stockage NDB qui sont traités dans le chapitre 15, Le moteur de stockage InnoDB et le chapitre 23, MySQL NDB Cluster 8.0. Pour les utilisateurs avancés, il contient également une description de l’architecture du moteur de stockage enfichable (voir Section 16.11,  » Présentation de l’architecture du moteur de stockage MySQL « ).

Pour des informations sur les fonctionnalités proposées dans les binaires commerciaux de MySQL Server, consultez les éditions MySQL, sur le site Web de MySQL. Les moteurs de stockage disponibles peuvent dépendre de l’édition de MySQL que vous utilisez.

Pour les réponses aux questions fréquemment posées sur les moteurs de stockage MySQL, consultez la section A.2, « FAQ MySQL 8.0 : Moteurs de stockage ».

Moteurs de stockage supportés par MySQL 8.0

  • InnoDB : Le moteur de stockage par défaut dans MySQL 8.0. InnoDB est un moteur de stockage à sécurité transactionnelle (conforme ACID) pour MySQL, qui dispose de fonctionnalités de commit, rollback et crash-recovery pour protéger les données des utilisateurs. Le verrouillage de niveau ligne de InnoDB (sans escalade vers des verrous de granularité plus grossière) et les lectures cohérentes non verrouillées de style Oracle augmentent la concurrence et les performances multi-utilisateurs. InnoDB stocke les données utilisateur dans des index en cluster afin de réduire les E/S pour les requêtes courantes basées sur les clés primaires. Pour maintenir l’intégrité des données, InnoDB prend également en charge les contraintes d’intégrité référentielle FOREIGN KEY. Pour plus d’informations sur InnoDB, voir le chapitre 15, Le moteur de stockage InnoDB.

  • MyISAM : Ces tables ont un faible encombrement. Le verrouillage au niveau de la table limite les performances dans les charges de travail en lecture/écriture, il est donc souvent utilisé dans les charges de travail en lecture seule ou en lecture principale dans les configurations Web et d’entreposage de données.

  • Memory : stocke toutes les données en RAM, pour un accès rapide dans les environnements qui nécessitent des consultations rapides de données non critiques. Ce moteur était auparavant connu sous le nom de moteur HEAP. Ses cas d’utilisation sont en diminution ; InnoDB avec sa zone de mémoire tampon fournit un moyen polyvalent et durable de garder la plupart ou toutes les données en mémoire, et NDBCLUSTER fournit des recherches rapides de valeurs clés pour d’énormes ensembles de données distribuées.

  • CSV : Ses tables sont en fait des fichiers texte avec des valeurs séparées par des virgules. Les tables CSV vous permettent d’importer ou de vider des données au format CSV, pour échanger des données avec des scripts et des applications qui lisent et écrivent ce même format. Comme les tables CSV ne sont pas indexées, vous conservez généralement les données dans des tables InnoDB pendant le fonctionnement normal, et n’utilisez les tables CSV que pendant l’étape d’importation ou d’exportation.

  • Archive : Ces tables compactes et non indexées sont destinées à stocker et à récupérer de grandes quantités d’informations historiques, archivées ou d’audit de sécurité rarement référencées.

  • Blackhole : Le moteur de stockage Blackhole accepte mais ne stocke pas les données, de manière similaire au périphérique Unix /dev/null. Les requêtes renvoient toujours un ensemble vide. Ces tables peuvent être utilisées dans des configurations de réplication où les instructions DML sont envoyées aux serveurs de réplique, mais où le serveur source ne conserve pas sa propre copie des données.

  • NDB (également connu sous le nom de NDBCLUSTER) : Ce moteur de base de données en grappe est particulièrement adapté aux applications qui exigent le plus haut degré possible de temps de fonctionnement et de disponibilité.

  • Merge : Permet à un DBA ou un développeur MySQL de regrouper logiquement une série de tables MyISAM identiques et de les référencer comme un seul objet. Bon pour les environnements VLDB tels que l’entreposage de données.

  • Federated : Offre la possibilité de relier des serveurs MySQL séparés pour créer une base de données logique à partir de plusieurs serveurs physiques. Très bon pour les environnements distribués ou de data mart.

  • Example : Ce moteur sert d’exemple dans le code source de MySQL qui illustre comment commencer à écrire de nouveaux moteurs de stockage. Il présente principalement un intérêt pour les développeurs. Le moteur de stockage est un « stub » qui ne fait rien. Vous pouvez créer des tables avec ce moteur, mais aucune donnée ne peut y être stockée ou récupérée.

Vous n’êtes pas limité à l’utilisation du même moteur de stockage pour un serveur ou un schéma entier. Vous pouvez spécifier le moteur de stockage pour n’importe quelle table. Par exemple, une application peut utiliser principalement des tables InnoDB, avec une table CSV pour l’exportation des données vers une feuille de calcul et quelques tables MEMORY pour les espaces de travail temporaires.

Choix d’un moteur de stockage

Les différents moteurs de stockage fournis avec MySQL sont conçus en fonction de différents cas d’utilisation. Le tableau suivant fournit un aperçu de certains moteurs de stockage fournis avec MySQL, avec des notes de clarification à la suite du tableau.

Tableau 16.1 Résumé des fonctionnalités des moteurs de stockage

.

.

.

.texte

.

.

.

Fonctionnalité MyISAM Mémoire InnoDB Archive NDB
B-.index arborescents Oui Oui Oui Non Non
Sauvegarde/récupération ponctuelle-.temps (note 1) Oui Oui Oui Oui Oui
Support des bases de données en grappe Non Non Non Non Non Oui
Index groupés Non Non Oui Non Non
Données compressées Oui (note 2) Non Oui Oui Non
Caches de données Non N/A Oui Non Oui
Données cryptées Oui (note 3) Oui (note 3) Oui (note 4) Oui (note 3) Oui (note 3)
Support des clés étrangères Non Non Oui Non Oui (note 5)
Indices de recherche en texte intégral Oui Non Oui (note 6) Non Non
Géospatial support des types de données Oui Non Oui Oui Oui
Indice géospatial support Oui Non Oui (note 7) Non Non
Indices de hachage Non Oui Non (note 8) Non Oui
Index caches Oui N/A Oui Non Oui
Granularité de verrouillage Table Table Row Row Row
MVCC No No Oui Non No
Support de la réplication (note 1) Oui Limité (note 9) Oui Oui Oui Oui
Limites de stockage 256TB RAM 64TB None 384EB
T-indices arborescents Non Non Non Non Oui
Transactions Non Non Oui Non Non Oui
Mise à jour des statistiques du dictionnaire de données Oui Oui Oui Oui Oui

Notes :

1. Implémenté dans le serveur, plutôt que dans le moteur de stockage.

2. Les tables MyISAM compressées sont prises en charge uniquement lors de l’utilisation du format de ligne compressé. Les tables utilisant le format de ligne compressé avec MyISAM sont en lecture seule.

3. Implémenté dans le serveur via des fonctions de chiffrement.

4. Implémenté dans le serveur via des fonctions de chiffrement ; Dans MySQL 5.7 et plus, le chiffrement des données au repos est pris en charge.

5. La prise en charge des clés étrangères est disponible dans MySQL Cluster NDB 7.3 et les versions ultérieures.

6. La prise en charge des index FULLTEXT est disponible dans MySQL 5.6 et les versions ultérieures.

7. La prise en charge de l’indexation géospatiale est disponible dans MySQL 5.7 et les versions ultérieures.

8. InnoDB utilise les index de hachage en interne pour sa fonctionnalité Adaptive Hash Index.

9. Voir la discussion plus loin dans cette section.

9.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.