Maison > base de données > tutoriel mysql > Une explication des six différences majeures entre les moteurs de stockage Mysql InnoDB et Myisam

Une explication des six différences majeures entre les moteurs de stockage Mysql InnoDB et Myisam

怪我咯
Libérer: 2017-05-07 11:39:03
original
1496 Les gens l'ont consulté

MyISAM
InnoDB
La différence de composition :

Chaque MyISAM est stocké sous forme de trois fichiers sur le disque. Le nom du premier fichier commence par le nom de la table et l'extension indique le type de fichier.

Le fichier .frm stocke les définitions de table.

L'extension du fichier de données est .MYD (MYData).

L'extension du fichier d'index est .MYI (MYIndex).

Les ressources basées sur le disque sont le fichier de données de l'espace table InnoDB et son fichier journal. La taille de la table InnoDB n'est limitée que par la taille du fichier du système d'exploitation, généralement 2 Go


Traitement des transactions :
La table de type MyISAM met l'accent sur les performances et ses temps d'exécution sont plus rapides que le type InnoDB, mais ne fournit pas de prise en charge des transactions

InnoDB fournit une prise en charge des transactions, des clés étrangères et d'autres fonctions de base de données avancées


SELECT UPDATE, INSERT, Supprimeropérations
Si vos données effectuent beaucoup de SELECT, MyISAM est un meilleur choix



1.Si vos données effectuent beaucoup de INSERT ou UPDATE, pour des raisons de performances, la table InnoDB


2.DELETE FROM table doit être utilisée, InnoDB ne sera pas Re- créez le tableau et supprimez-le ligne par ligne. L'opération

3.LOAD TABLE FROM MASTER ne fonctionne pas pour InnoDB. La solution consiste d'abord à changer la table InnoDB en table MyISAM, à importer les données, puis à la changer en table InnoDB. , mais pour les tables qui utilisent des fonctionnalités InnoDB supplémentaires (telles que les clés étrangères), n'appliquez pas

aux opérations AUTO_INCREMENT
par Gestion interne d'une colonne AUTO_INCREMEN dans une table.



MyISAM se met automatiquement à jour pour les opérations INSERT et UPDATE Cette chronique . Cela rend les colonnes AUTO_INCREMENT plus rapides (au moins 10 %). Une fois la valeur en haut de la séquence supprimée, elle ne peut plus être utilisée. (Lorsque la colonne AUTO_INCREMENT est définie comme dernière colonne d'un index multi-colonnes, il est possible de réutiliser des valeurs supprimées du haut de la séquence).
La valeur AUTO_INCREMENT peut être réinitialisée avec ALTER TABLE ou myisamch

Pour les champs de type AUTO_INCREMENT, InnoDB doit contenir un index de ce champ uniquement, mais dans la table MyISAM, il peut être créé avec d'autres field Index Union

Gestion de l'auto_increment meilleure et plus rapide

Si vous spécifiez la colonne AUTO_INCREMENT pour une table, le handle de table InnoDB dans le dictionnaire de données contient un compteur appelé compteur d'auto-incrémentation, qui est utilisé pour attribuer une nouvelle valeur à la colonne.


Le compteur à incrémentation automatique n'est stocké que dans la mémoire principale, pas sur le disque

Pour l'implémentation de l'algorithme de cette calculatrice, veuillez vous référer à


Comment fonctionne la colonne AUTO_INCREMENT dans InnoDB

Le nombre spécifique de lignes dans le tableau

Sélectionnez count(*) dans la table, MyISAM lit simplement le nombre de lignes enregistrées. Notez que lorsque l'instruction count(*) contient des conditions Where, les opérations des deux tables sont les mêmes
<.> InnoDB n'enregistre pas le nombre spécifique de lignes dans la table, c'est-à-dire que lors de l'exécution de select count(*) from table, InnoDB doit analyser la table entière pour calculer le nombre de lignes

Lock
Verrouillage de table

Fournit un verrouillage de ligne (verrouillage au niveau de la ligne) et une lecture non verrouillable dans les

SELECT) cohérents avec le type Oracle. le verrouillage des lignes de la table InnoDB n'est pas absolu. Si MySQL ne peut pas déterminer la plage à analyser lors de l'exécution d'une instruction SQL, la table InnoDB verrouillera également la table entière, par exemple, mettre à jour l'ensemble de tables num=1 où le nom est comme « %aaa ». %”

Une explication des six différences majeures entre les moteurs de stockage Mysql InnoDB et Myisam

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal