Différences 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
Opérations SELECT UPDATE, INSERT, Supprimer
Si vous effectuez un grand nombre de SELECT, MyISAM est un meilleur choix
1 Si vos données effectuent un grand nombre d'INSERT ou UPDATE, pour des raisons de performances, vous devriez Lorsque vous utilisez la table InnoDB
2.DELETE FROM table, InnoDB ne recréera pas la table, mais la supprimera ligne par ligne.
3.L'opération 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 l'InnoDB supplémentaire. les fonctionnalités utilisées (Par exemple, clés étrangères) les tables ne sont pas applicables
Opérations sur AUTO_INCREMENT
Traitement interne d'une colonne AUTO_INCREMEN par table.
MyISAM met automatiquement à jour cette colonne pour les opérations INSERT et UPDATE. 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 avec uniquement ce champ, mais dans la table MyISAM, il peut être établi avec d'autres champs Index union
Gestion de l'auto_increment meilleure et plus rapide
Si vous spécifiez une 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 est uniquement stocké 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 la colonne AUTO_INCREMENT est utilisée dans InnoDB Le nombre spécifique de lignes dans la table de travail
select count(*) from table, MyISAM lit simplement le nombre de lignes enregistrées. Notez que lorsque l'instruction count(*) contient la condition Where, les opérations. des deux tables sont identiques
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 combien de lignes il y a
Verrouillage
Le verrouillage de la table
fournit un verrouillage des lignes (verrouillage au niveau de la ligne) et fournit une lecture non verrouillable
SELECT cohérents avec le type Oracle De plus. , 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% »