Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 14231|Répondre: 1

[Source] La différence entre engine=innodb et engine=myisam dans mysql

[Copié le lien]
Publié sur 16/07/2017 11:04:57 | | |
1/ISAM

ISAM est une approche bien définie et éprouvée de la gestion des tables de données, conçue en consultant la base de données beaucoup plus souvent qu’elle n’est mise à jour. En conséquence, ISAM effectue des lectures rapidement et ne consomme pas beaucoup de mémoire et de ressources. Les deux principaux inconvénients de l’ISAM sont qu’il ne prend pas en charge le traitement des transactions et n’est pas tolérant aux pannes : si votre disque dur plante, les fichiers de données ne peuvent pas être récupérés. Si vous utilisez ISAM pour des applications critiques, vous devez toujours sauvegarder toutes vos données en temps réel, et MySQL peut prendre en charge ces applications de sauvegarde grâce à sa fonction de réplication.

2/InnoDB

Il fournit une fonction de contrôle de transaction, qui garantit qu’un ensemble de commandes est exécuté avec succès, ou qu’en cas d’erreur de commande, que le résultat de toutes les commandes est annulé, on peut imaginer que la capacité de contrôle des transactions est très importante dans la banque électronique. Prise en charge du COMMIT, du ROLLBACK et d’autres fonctionnalités de transaction. La dernière version de Mysql prévoit déjà de supprimer le support de BDB au profit d’InnoDB.

MyIASM est une nouvelle version des tables IASM avec les extensions suivantes :
Une portabilité au niveau binaire.
Index de colonne NULL.
Il y a moins de fragments pour les lignes variables que pour les tables ISAM.
Prise en charge des fichiers volumineux.
Meilleure compression indicielle.
Est-il préférable d’avoir une distribution statistique ?
Meilleur traitement auto_increment rapide.

Voici quelques détails et des différences spécifiques d’implémentation :

1. InnoDB ne prend pas en charge les index de type FULLTEXT.
2. Les tables ne sont pas sauvegardées dans InnoDB
des lignes spécifiques, c’est-à-dire exécuter select count(*) from
InnoDB analyse toute la table pour calculer le nombre de lignes disponibles, mais MyISAM se contente de lire les lignes enregistrées. Notez que lorsque l’instruction count(*) contient
où condition, le fonctionnement des deux tables est le même.
3. Pour les champs de AUTO_INCREMENT type, l’index contenant uniquement ce champ doit être inclus dans InnoDB, mais dans la table MyISAM, il est possible de créer un index fédéré avec d’autres champs.
4. SUPPRIMER
FROM table, InnoDB ne recrée pas la table, mais la supprime ligne par ligne.
5. TABLE DE CHARGE DEPUIS
L’opération 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 pour la table InnoDB, mais elle ne s’applique pas aux tables utilisant des fonctionnalités supplémentaires d’InnoDB (comme des clés étrangères).

De plus, le verrouillage de ligne d’une table InnoDB n’est pas absolu ; si MySQL ne peut pas déterminer le champ à analyser lors de l’exécution d’une instruction SQL, la table InnoDB verrouillera également toute la table, comme par update
Ensemble de table num=1 où le nom est comme « A % »

Aucune table n’est omnipotente, ce n’est qu’en choisissant le type de table approprié pour le type métier que nous pouvons maximiser les avantages de performance de MySQL.

MySQL
Lorsque l’administrateur crée une base de données, la table passe par défaut au type InnoDB.

Dans une base de données, mon ISAM
Quelle est la différence entre les deux types : le type MyISAM ne prend pas en charge le traitement avancé comme le traitement des transactions, tandis que le type InnoDB le permet.
Les tables du type MyISAM mettent l’accent sur la performance, qui fonctionne plusieurs degrés plus vite que le type InnoDB, mais n’offre pas de support transactionnel, tandis qu’InnoDB offre des fonctionnalités avancées de base de données telles que le support transactionnel, les clés étrangères, etc.

Les fichiers de données binaires de type MyISAM peuvent être migrés entre différents systèmes d’exploitation. C’est-à-dire qu’il peut être copié directement du système Windows vers un système Linux.

Modifiez le type de moteur du tableau :

ALTER
TABLE tablename ENGINE = MyISAM ;

MyISAM:,它是基于传统的ISAM类型,ISAM是Indexed
Méthode d’accès séquentiel
C’est la méthode standard pour stocker des enregistrements et fichiers. Comparé à d’autres moteurs de stockage, MyISAM propose la plupart des outils pour vérifier et réparer les tables.
Les tables MyISAM peuvent être compressées et prennent en charge la recherche en texte entier. Elles ne sont pas sécurisées sur le plan transactionnel et ne prennent pas en charge les clés étrangères. Si quelque chose est rétrogradé, cela provoquera un retour incomplet et ce n’est pas atomique. Si un grand nombre d’exécutions sont réalisées
TheSELECT, MyISAM est le meilleur choix.

InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,

Pour les types InnoDB qui prennent en charge des choses, la principale raison qui affecte la vitesse est que le paramètre par défaut AUTOCOMMIT est activé et que le programme n’appelle pas explicitement BEGIN
Démarrez une transaction, ce qui entraîne un commit automatique pour chaque insertion, ce qui affecte sérieusement la vitesse. Vous pouvez appeler start avant l’exécution de SQL, et plusieurs SQL forment une chose (même si l’autocommit est activé
peut aussi être activé), ce qui améliorera considérablement les performances.

1. Voir les informations de tableau, y compris le type de moteur utilisé, le codage des caractères, la structure de la table, etc

Utilise cette commande

mysql>
Afficher Créer Tableau T1 ; --t1 est le nom du tableau

2.
La commande suivante peut être exécutée pour basculer les tables non transactionnelles vers les transactions (les données ne sont pas perdues), les tables innodb sont plus sécurisées que les tables myisam :
Alter Table T1
type=innodb ; --t1 est le nom du tableau

3.
La table innodb ne peut pas être table_name avec la commande de table de réparation et myisamchk -r
Mais vous pouvez utiliser une table de contrôle
t1, et mysqlcheck [OPTIONS] [tableaux]

4.
Les paramètres suivants ont été ajoutés à la ligne de commande pour lancer la base de données mysql afin que toutes les nouvelles tables de données mysql soient par défaut utilisées par défaut (
Cela n’affecte que la déclaration create. )
--type-table-par défaut=InnoDB

5.
Changer temporairement le type de table par défaut peut se faire en suivant :
set table_type=InnoDB ;

MyISAM
Avantages : vitesse rapide, moins d’espace disque occupé ; L’utilisation du disque d’une base de données ou d’une table peut être déterminée soit en vérifiant la taille du fichier correspondant (dossier) par le système d’exploitation, soit en utilisant l’instruction SQL AFFICHER L’ÉTAT DE LA TABLE
Inconvénients : Aucun mécanisme d’intégrité des données, c’est-à-dire pas de prise en charge des transactions et des clés étrangères

InnoDB
Avantages : Prise en charge des transactions et clés étrangères, et mécanisme complet d’intégrité des données. Vous pouvez utiliser AFFICHER L’ÉTAT DE LA TABLE pour vérifier l’occupation du disque d’une bibliothèque ou d’une table
Inconvénients : vitesse ultra-lente, grand espace disque occupé ; Toutes les bibliothèques sont stockées dans un (généralement) ou plusieurs fichiers, et le système d’exploitation ne peut pas déterminer l’espace d’une bibliothèque ou d’une table

BDB
Avantages : Prendre en charge les transactions, ne prend pas en charge les clés étrangères, car sur la base du support des transactions, les clés étrangères peuvent être impréglées indirectement du côté client de la base de données (qui peut être le côté serveur du client final, comme PHP), garantissant ainsi l’intégrité des données ;
Inconvénients : vitesse lente, utilisation élevée du disque ; Vous ne pouvez pas interroger l’espace d’occupation d’une base de données ou d’une table via SHOW TABLE STATUS. Le système d’exploitation peut comprendre la taille du dossier correspondant de la bibliothèque ou du fichier correspondant de la table, mais comme la table BDB doit toujours générer un fichier journal, et que l’occupation réelle du disque doit inclure le fichier journal, la taille d’une bibliothèque ou d’une table est toujours inférieure à l’espace réel occupé par le système d’exploitation.




Précédent:Les attributs du type de champ de table MySQL sont expliqués en détail
Prochain:outil d’accès à la base de données PHP Medoo
 Propriétaire| Publié sur 16/07/2017 11:09:29 |
//更改引擎
modifier table table name engine = MyISAM ;

Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com