Maison > Article > base de données > Quels sont les moteurs de stockage couramment utilisés dans MySQL ? En quoi diffèrent-ils les uns des autres ?
Les quatre moteurs de stockage couramment utilisés dans MySQL sont : le moteur de stockage MyISAM, le moteur de stockage innoDB, le moteur de stockage MEMORY et le moteur de stockage ARCHIVE. Cet article se concentrera sur ces quatre moteurs de stockage, et comparera enfin ces quatre moteurs de stockage.
Moteur de stockage dans MySQL
1. Le moteur de stockage est en fait un mécanisme d'accès aux fichiers de base de données, comment stocker les données, comment indexer les données stockées, comment mettre à jour, interroger les données et d'autres méthodes de mise en œuvre technique.
2. Les données dans MySQL sont stockées dans des fichiers (ou en mémoire) à l'aide d'une variété de technologies différentes. Chacune de ces technologies utilise différents mécanismes de stockage, techniques d'indexation, niveaux de verrouillage et fournit finalement un large éventail de fonctions et de fonctions différentes. capacités. Dans MySQL, ces différentes technologies et fonctions associées sont appelées moteurs de stockage.2. Afficher les moteurs dans MySQL
1. Afficher les moteurs de stockage pris en charge par MySQL et obtenir le stockage par défaut de MySQL. moteur.
2. show variables like '% storage_engine'; // Afficher le moteur de stockage par défaut de mysql 3. show create table tablename; Ce moteur de stockage par défaut a été modifié ! 4. afficher l'état de la table à partir de la base de données où name="tablename" //Afficher avec précision le moteur de stockage utilisé par une table dans une base de donnéesMySQL
Plusieurs stockages. moteurs couramment utilisés dans: MyISAM
Moteur de stockage : Emplacement de stockage : MySQL Si vous utilisez le moteur de stockage MyISAM, la base de données les types de fichiers incluent .frm, .MYD et .MYI. L'emplacement de stockage par défaut est C:Documentsand SettingsAll UsersApplication DataMySQLMySQL Server 5.1data
méthode de stockage : MyISAM Ce moteur de stockage ne prend pas en charge les transactions. -verrous de niveau et ne prend en charge que les verrous de table insérés simultanément. Il est principalement utilisé pour la sélection à charge élevée. Méthode d'indexation : MyISAM utilise également l'index B+tree mais son implémentation spécifique est légèrement différente d'Innodb.Ce moteur est basé sur le moteur de base de données ISAM. En plus de fournir un grand nombre de fonctions telles que l'indexation et la gestion des champs qui ne sont pas disponibles dans ISAM, MyISAM utilise également un mécanisme de verrouillage de table pour optimiser plusieurs opérations de lecture et d'écriture simultanées. , mais cela nécessite une utilisation fréquente de la commande OPTIMIZE TABLE pour récupérer l'espace gaspillé par le mécanisme de mise à jour, sinon la fragmentation augmentera, affectant finalement les performances d'accès aux données. MyISAM possède également des extensions utiles, telles que l'outil MyISAMChk pour réparer les fichiers de base de données et l'outil MyISAMPack pour récupérer l'espace gaspillé. MyISAM met l'accent sur les opérations de lecture rapides et est principalement utilisé pour les sélections à charge élevée. Cela peut également être la principale raison pour laquelle MySQL est si populaire dans le développement Web : un grand nombre d'opérations de données effectuées dans le développement Web sont des opérations de lecture, c'est pourquoi la plupart des fournisseurs d'hébergement virtuel. et le fournisseur de plate-forme Internet (Internet Presence Provider, IPP) autorisent uniquement l'utilisation du format MyISAM.
Les tables de type MyISAM prennent en charge trois structures de stockage différentes : statique, dynamique et compressée.
Type statique : signifie que la taille de la colonne de table définie est fixe (c'est-à-dire qu'elle ne contient pas de types de données de longueur variable tels que xblob, xtext, varchar, etc.), donc MySQL utilisera automatiquement le MyISAM statique format. Les performances des tables utilisant des formats statiques sont relativement élevées car la surcharge nécessaire pour maintenir et accéder aux données stockées dans un format prédéterminé est très faible, mais ces performances élevées se font au détriment de l'espace car il est fixé au moment de la définition. Donc non. quelle que soit la taille de la valeur dans la colonne, la valeur maximale prévaudra et occupera tout l’espace.
Type dynamique : Si une colonne (même s'il n'y a qu'une seule colonne) est définie comme dynamique (xblob, xtext, varchar et autres types de données), alors MyISAM utilisera automatiquement le type dynamique, bien que la table de types dynamiques occupe moins espace que l'espace table de type statique, mais cela entraîne des performances réduites, car si le contenu d'un champ change, sa position devra probablement être déplacée, ce qui entraînera la génération de fragments à mesure que les changements de données augmentent. les fragments augmentent également et les performances d'accès aux données seront réduites en conséquence.
Pour le problème de l'accessibilité réduite des données en raison d'une fragmentation accrue, il existe deux solutions :
a. Utilisez autant que possible des types de données statiques
b. Utilisez fréquemment l'instruction d'optimisation table_name pour défragmenter la table ; et restaurez-le Perte d'espace due aux mises à jour et aux suppressions de données de table. Si le moteur de stockage ne prend pas en charge l'optimisation de la table nom_table, vous pouvez vider et recharger les données, ce qui peut également réduire la fragmentation.
Type de compression : si vous créez une table dans la base de données en lecture seule tout au long de son cycle de vie ; doit utiliser la table de compression MyISAM pour réduire l'utilisation de l'espace.
Avantages et inconvénients : Les avantages de MyISAM sont son faible encombrement et sa vitesse de traitement rapide. L'inconvénient est que l'intégrité et la concurrence des transactions ne sont pas prises en charge.
2. innoDBMoteur de stockage
Emplacement de stockage : MySQL Si vous utilisez le moteur de stockage InnoDB, les types de fichiers de base de données incluent .frm, ibdata1 et .ibd. Fichiers .frm L'emplacement de stockage par défaut est C:Documents and SettingsAll UsersApplicationDataMySQLMySQL Server 5.1data L'emplacement de stockage par défaut des fichiers ibdata1 et .ibd est le dossier de données dans le répertoire d'installation MySQL.
La table MySQL du moteur de stockage innodb offre des capacités de transaction, de restauration et de réparation des pannes du système ainsi qu'une sécurité des transactions avec un contrôle de rafale multi-versions.
innodb prend en charge les colonnes à incrémentation automatique (auto_increment). La valeur d'une colonne à incrémentation automatique ne peut pas être vide si elle est vide lorsqu'elle est utilisée, comment la valeur existante peut-elle être automatiquement enregistrée et commencer à prendre de la valeur ? Si c'est le cas, elle n'est pas aussi bonne que la valeur actuelle. Si elle est toujours grande, alors cette valeur sera enregistrée.
Le moteur de stockage innodb prend en charge les clés étrangères. La table où se trouve la clé étrangère est appelée table enfant et la table dont elle dépend est appelée table parent.
La chose la plus importante à propos du moteur de stockage innodb est qu'il prend en charge les transactions et les fonctions liées aux transactions.
Le moteur de stockage innodb prend en charge les verrous au niveau des lignes mvcc.
L'index du moteur de stockage innodb utilise B+Tree
Avantages et inconvénients : L'avantage d'InnoDB est qu'il offre un bon traitement des transactions, des capacités de réparation en cas de crash et un contrôle de concurrence. L'inconvénient est que l'efficacité de lecture et d'écriture est médiocre et que l'espace de données occupé est relativement important.
3. MÉMOIREMoteur de stockage
Le moteur de stockage en mémoire est un peu différent de certains des moteurs de stockage précédents. Il utilise les données qui y sont stockées pour créer des tables, et tout. Les données sont également stockées en mémoire.
Chaque table basée sur le moteur de stockage mémoire correspond en fait à un fichier disque. Le nom de fichier et le nom de table du fichier sont les mêmes et le type est .frm. Ce fichier stocke uniquement la structure de la table et ses fichiers de données sont stockés en mémoire, ce qui favorise un traitement rapide des données et améliore les capacités de traitement de l'ensemble de la table.
Le moteur de stockage de mémoire utilise l'index de hachage (HASH) par défaut, ce qui est plus rapide que l'utilisation du type B-+Tree. Si les lecteurs souhaitent utiliser le type B-tree, ils peuvent le référencer lors de la création.
Les données des fichiers du moteur de stockage en mémoire sont stockées en mémoire Si une exception se produit dans le processus mysqld, les données disparaîtront si la machine est redémarrée ou arrêtée. Par conséquent, le cycle de vie des tables dans le moteur de stockage mémoire est très court et n’est généralement utilisé qu’une seule fois.
4. ARCHIVEMoteur de stockage
Ce moteur de stockage est très approprié pour stocker de grandes quantités de données indépendantes sous forme d'enregistrements historiques. Différent des deux moteurs InnoDB et MyISAM, ARCHIVE fournit une fonction de compression et a une vitesse d'insertion efficace. Cependant, ce moteur ne prend pas en charge les index, les performances des requêtes sont donc médiocres.
4. Comparaison de quatre moteurs de stockage
InnoDB : prend en charge le traitement des transactions, prend en charge les clés étrangères, prend en charge les capacités de réparation en cas de crash et le contrôle de concurrence. Si vous devez avoir des exigences relativement élevées en matière d'intégrité des transactions (comme les banques) et exiger un contrôle de concurrence (comme la vente de billets), alors choisir InnoDB présente de grands avantages. Si vous avez besoin d'une base de données nécessitant des mises à jour et des suppressions fréquentes, vous pouvez également choisir InnoDB car elle prend en charge la validation et l'annulation des transactions.
MyISAM : l'insertion de données est rapide et l'utilisation de l'espace et de la mémoire est relativement faible. Si la table est principalement utilisée pour insérer de nouveaux enregistrements et lire des enregistrements, alors choisir MyISAM peut atteindre une efficacité de traitement élevée. Il peut également être utilisé si les exigences d’intégrité et de concurrence de l’application sont relativement faibles. Si la table de données est principalement utilisée pour insérer et interroger des enregistrements, le moteur MyISAM peut fournir une efficacité de traitement plus élevée
MÉMOIRE : toutes les données sont en mémoire et la vitesse de traitement des données est rapide, mais la sécurité n'est pas élevée. Si vous avez besoin de vitesses de lecture et d'écriture rapides et de faibles exigences en matière de sécurité des données, vous pouvez choisir MEMOEY. Il a des exigences sur la taille de la table et ne peut pas créer une table trop grande. Par conséquent, ce type de base de données n’est utilisé que pour des tables de base de données relativement petites. Si vous ne stockez des données que temporairement, que la quantité de données n'est pas importante et que vous n'avez pas besoin d'une sécurité élevée des données, vous pouvez choisir le moteur de mémoire pour enregistrer les données dans la mémoire. Ce moteur est utilisé comme table temporaire dans MySQL pour stocker. les résultats intermédiaires de la requête
Si vous n'avez que des opérations INSERT et SELECT, vous pouvez choisir Archive Archive prend en charge les opérations d'insertion à haute concurrence, mais elle n'est pas sécurisée pour les transactions. Archive est très approprié pour stocker des données archivées. Par exemple, vous pouvez utiliser Archiv
pour enregistrer les informations de journal. Notez que la même base de données peut également utiliser des tables de plusieurs moteurs de stockage. Si une table nécessite un traitement de transactions relativement élevé, vous pouvez choisir InnoDB. Dans cette base de données, les tables avec des exigences de requête plus élevées peuvent être stockées dans MyISAM. Si la base de données nécessite une table temporaire pour l'interrogation, vous pouvez choisir le moteur de stockage MEMORY.
Articles connexes :
9 différences entre le moteur de stockage MySQL MyISAM et InnoDB
Différence du moteur de stockage MySQL-MySQL
Vidéos associées :
Storage Engine-2017 Dernier didacticiel vidéo avancé PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!