Maison >base de données >tutoriel mysql >La différence entre MyISAM et InnoDB dans MySQL [explication détaillée]

La différence entre MyISAM et InnoDB dans MySQL [explication détaillée]

藏色散人
藏色散人original
2018-09-10 17:34:191115parcourir

Cet article présente principalement la différence entre MyISAM et InnoDB dans MySQL. J'espère qu'il sera utile aux amis dans le besoin !

La différence entre MyISAM et InnoDB :

1 MySQL utilise MyISAM par défaut.

2.MyISAM ne prend pas en charge les transactions, mais InnoDB le fait. AUTOCOMMIT d'InnoDB est activé par défaut, c'est-à-dire que chaque instruction SQL sera encapsulée dans une transaction par défaut et automatiquement soumise. Cela affectera la vitesse, il est donc préférable d'afficher plusieurs instructions SQL entre le début et la validation pour former une transaction. Allez soumettre.

3.InnoDB prend en charge le verrouillage des lignes de données, tandis que MyISAM ne prend pas en charge le verrouillage des lignes et prend uniquement en charge le verrouillage de la table entière. Tout de suite Le verrou de lecture et le verrou d'écriture sur la même table MyISAM s'excluent mutuellement lorsque MyISAM lit et écrit simultanément, s'il y a à la fois des demandes de lecture et des demandes d'écriture dans la file d'attente, la demande d'écriture par défaut a une priorité plus élevée, même si la demande de lecture. arrive le premier, donc MyISAM n'est pas adapté aux situations où un grand nombre de requêtes et de modifications coexistent, car le processus de requête sera bloqué pendant une longue période. Étant donné que MyISAM est une table de verrouillage, une opération de lecture fastidieuse privera les autres processus d'écriture.

4.InnoDB prend en charge les clés étrangères, mais pas MyISAM.

5. InnoDB a une gamme de clés primaires plus large, jusqu'à 2 fois celle de MyISAM.

6.InnoDB ne prend pas en charge l'indexation de texte intégral, contrairement à MyISAM. L'index de texte intégral fait référence à char, Créez un index trié inverse pour chaque mot dans varchar et text (sauf les mots vides). L'index de texte intégral de MyISAM est en réalité inutile car il ne prend pas en charge la segmentation des mots chinois. L'utilisateur doit ajouter des espaces après la segmentation des mots. La grille est ensuite écrite dans la table de données et les mots contenant moins de 4 caractères chinois seront ignorés comme les mots vides.

7.MyISAM prend en charge les données SIG, mais pas InnoDB. Autrement dit, MyISAM prend en charge les objets de données spatiales suivants : point, ligne, polygone, surface, etc.

8. Count(*) sans où utilise MyISAM beaucoup plus rapidement qu'InnoDB. parce que Il y a un compteur intégré à MyISAM. Lorsque count(*), il lit directement à partir du compteur, tandis qu'InnoDB doit analyser la table entière. Par conséquent, lors de l’exécution de count(*) sur InnoDB, il est généralement Il doit être accompagné de où et où doit contenir des colonnes d'index autres que la clé primaire. Pourquoi y a-t-il ici un accent particulier sur « autre que la clé primaire » ? Parce que l'index principal dans InnoDB est le même que brut Les données sont stockées ensemble, tandis que l'index secondaire est stocké séparément, puis un pointeur pointe vers l'index principal. clé. Par conséquent, s'il s'agit simplement de count(*), il est plus rapide d'utiliser l'index secondaire pour analyser, tandis que la clé primaire renvoie principalement du brut lors de l'analyse de l'index. L'effet est plus important lors de l'utilisation de données.

Pour plus de connaissances MySQL, vous pouvez vous référer au Tutoriel vidéo MySQL ou au Manuel MySQL !

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!

Déclaration:
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