web-dev-qa-db-fra.com

Que sont les moteurs de base de données MySQL?

J'ai regardé autour de moi et j'ai trouvé que certains des moteurs MySQL sont innodb et MyISAM. Il y en a peut-être quelques autres. Ma question est quels sont ces moteurs de base de données?

Quelles sont les différences entre les différents moteurs MySQL? Et plus important encore, comment puis-je décider lequel utiliser?

68
pavanred
mysql> SHOW ENGINES;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+

Personnellement, j'utilise toujours InnoDB si je dois utiliser MySQL. Il prend en charge les clés de transaction et les clés étrangères, contrairement à MyISAM.

69
Vincent Savard

MyISAM et InnoDB sont les moteurs les plus couramment utilisés.

MyISAM est légèrement plus rapide qu'InnoDB et implémente l'index FULLTEXT qui est très utile pour intégrer les capacités de recherche. MyISAM n'est pas traité et n'implémente pas de contraintes de clé étrangère, ce qui est un inconvénient majeur.

Mais vous pouvez utiliser le meilleur des deux et créer des tableaux avec différents moteurs de stockage. Certains logiciels (WordPress, je pense) utilisent Inno pour la plupart des données, comme les relations entre les pages, les versions, etc. Les enregistrements des articles contiennent un ID qui renvoie à un enregistrement dans une table de contenu distincte qui utilise MyISAM. De cette façon, le contenu est stocké dans la table qui a les meilleures capacités de recherche, tandis que la plupart des autres données sont stockées dans des tables qui renforcent l'intégrité des données.

Si j'étais vous, je choisirais Inno, car c'est le plus fiable. N'utilisez MyISAM qu'à des fins spécifiques si vous en avez besoin.

Vous pouvez configurer votre base de données pour utiliser InnoDB par défaut lors de la création de nouvelles tables.

38
GolezTrol

Différents moteurs de stockage disponibles, il y a peu de raisons de ne pas utiliser les types de moteurs MyISAM ou InnoDB. MyISAM fera l'affaire dans la plupart des situations, mais si vous avez un nombre élevé de mises à jour ou d'inserts par rapport à vos recherches et sélections, vous obtiendrez de meilleures performances du moteur InnoDB. Pour obtenir les meilleures performances d'InnoDB, vous devez ajuster les paramètres de votre serveur, sinon il n'y a aucune raison de ne pas l'utiliser.

Le moteur MERGE est un moyen extrêmement efficace d'interroger les données de plusieurs tables définies de manière identique. Le moteur MEMORY est le meilleur moyen d'effectuer un grand nombre de requêtes complexes sur des données qui seraient inefficaces à rechercher sur un moteur basé sur disque. Le moteur CSV est un excellent moyen d'exporter des données qui pourraient être utilisées dans d'autres applications. BDB est excellent pour les données qui ont une clé unique à laquelle on accède fréquemment.

This Image provides an overview of some storage engines provided with MySQL:

12
rajangupta

Vous obtiendrez peut-être plus d'informations ici: https://en.wikipedia.org/wiki/Database_engine

Un moteur de base de données (ou moteur de stockage) est le composant logiciel sous-jacent qu'un système de gestion de base de données (SGBD) utilise pour créer, lire, mettre à jour et supprimer (CRUD) des données d'une base de données. La plupart des systèmes de gestion de base de données incluent leur propre interface de programmation d'application (API) qui permet à l'utilisateur d'interagir avec son moteur sous-jacent sans passer par l'interface utilisateur du SGBD.

1
Mogli