Comme vous pouvez le voir sur la photo, l'architecture MySQL est principalement divisée en Couche serveur et Couche moteur de stockage .
La couche serveur est divisée en connecteurs, caches, analyseurs, optimiseurs et exécuteurs. Toutes les fonctions du moteur de stockage croisé sont implémentées dans cette couche, telles que les fonctions, les procédures stockées, les déclencheurs, les vues, etc.
Le moteur de stockage est connectable. Les moteurs de stockage courants incluent MyISAM, InnoDB, Memory, etc. La valeur par défaut est MyISAM avant MySQL5.5, et la valeur par défaut après est InnoDB.
Le connecteur est principalement utilisé pour gérer les connexions clients et l'authentification des utilisateurs.
Le protocole TCP est utilisé pour la connexion entre le client et le serveur. La connexion est établie en effectuant une négociation TCP, et sur cette base, le connecteur démarre l'authentification.
> mysql -hlocalhost -P3306 -uroot -p
Si l'authentification échoue, une erreur se produira ERREUR 1045 (28000) : Accès refusé pour l'utilisateur 'root'@'localhost' (en utilisant le mot de passe : OUI).
Vous pouvez afficher les informations de toutes les connexions du système via la commande show processlist :
# 🎜🎜#Commond La colonne représente l'état de la connexion, Daemon représente le processus en arrière-plan, Query représente la requête et Sleep représente la connexion inactive. 3. Cache de requêtes La requête demandée par le client n'accédera pas directement au moteur de stockage, mais vérifiera d'abord si le résultat existe dans le cache. Si le résultat a été mis en cache, renvoyez-le directement ; sinon, réexécutez le processus de requête et mettez le résultat en cache une fois la requête terminée. Le cache d'invalidation sera vidé lorsque la table de données change, comme les opérations d'insertion, de mise à jour, de suppression et de modification. Pour les tables de données qui changent fréquemment, le taux de réussite du cache est très faible. Étant donné que l'utilisation du cache réduirait les performances de lecture et d'écriture, le module de cache a été supprimé dans les versions postérieures à MySQL 8.0.Vous pouvez vérifier si le cache est activé en utilisant la commande suivante :
4. Analyseur L'analyseur effectue principalement desanalyses lexicales et des analyses grammaticales sur les instructions SQL.
Pour les mots-clés MySQL et la signification de chaque mot, une analyse lexicale est requise. Effectuez ensuite une analyse syntaxique pour détecter si l'instruction SQL répond aux exigences de syntaxe MySQL. MySQL identifie les noms de colonnes, les noms de tables, où, select/update/insert et d'autres mots-clés MySQL dans la chaîne, et détermine si le SQL satisfait la grammaire selon les règles de grammaire, et génère enfin un résumé arbre syntaxique ( AST). Par exemple : Si vous écrivez le mot-clé lesswhere dans l'instruction SQL, une erreur s'affichera.mysql> select * from user id=1; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=1' at line 1
optimisation logique et optimisation physique.
L'optimisation logique effectue principalement la réécriture de prédicats équivalents, la simplification conditionnelle, l'élimination de sous-requêtes, l'élimination de connexions, l'optimisation sémantique, la fusion de groupes, le refoulement de sélection, la requête d'optimisation d'index, la requête de vue de remplacement de requête de table, le remplacement ou l'opération d'union, etc. . Grâce à l'algorithme glouton et au modèle d'estimation des coûts, l'objectif principal de l'optimisation physique est d'estimer le coût de chaque méthode d'exécution. Et utilisez des index pour optimiser les connexions de tables et enfin générer des plans d'exécution de requêtes.Ci-joint le schéma d'architecture de l'optimiseur MySQL, vous pouvez clairement voir le processus d'optimisation :
#🎜 🎜#6. Exécuteur
L'exécuteur appelle l'interface du moteur de stockage pour exécuter réellement la requête SQL. L'exécution de l'instruction SQL se termine après l'obtention des résultats de la requête renvoyés par le moteur de stockage et leur renvoi au client.
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!