Cet article vous apporte des connaissances pertinentes sur mysql, qui présente principalement les problèmes liés à l'architecture logique mysql. L'architecture est grossièrement divisée en trois couches, qui sont utilisées pour le traitement des threads de connexion et contiennent la plupart des services de base de mysql. moteur de stockage, j'espère qu'il sera utile à tout le monde.
Apprentissage recommandé : Tutoriel d'apprentissage mysql
Client -> authentification, sécurité)
Les services inclus ne sont pas uniques à MySQL. Ils servent tous des programmes C/S ou ce dont ces programmes ont besoin (traitement de connexion, authentification d'autorisation, sécurité, etc.)
Cache de requêtes——>Parseur——>Optimiseur——>Exécuter la requête
Cache de requêtes, analyse, analyse, optimisation, mise en cache, toutes les fonctions intégrées (date, heure, mathématiques et fonctions de chiffrement) en même temps, toutes les fonctions fournies par le moteur de stockage sont concentrées dans cette couche (procédures stockées, déclencheurs, vues)
Processus : analyser la requête Avant, vous devez d'abord interroger le cache. enregistrez les informations de la requête et les données de résultat. Si une requête existe dans le cache, il n'est pas nécessaire d'analyser, d'optimiser et d'exécuter la requête. Les résultats de la requête stockés dans le cache seront renvoyés directement
Le moteur de stockage est responsable du stockage et de la récupération des données dans mysql (similaire au système de fichiers sous Linux)
Chaque moteur de stockage a des avantages et des inconvénients, et des services intermédiaires La couche communique avec le stockage moteur via des API. Ces interfaces API masquent les différences entre les différents moteurs de stockage et rendent la couche de requête aussi transparente que possible.
L'API du moteur de stockage contient plus d'une douzaine de fonctions de bas niveau, telles que l'exécution de "démarrer une transaction" ou la récupération de lignes avec des clés primaires spécifiques, mais le moteur de stockage n'analyse généralement pas SQL (InnoDB analysera les définitions de clés étrangères car lui-même Si cette fonction n'est pas implémentée), les différents moteurs de stockage ne communiqueront pas entre eux, mais répondront simplement aux requêtes du serveur de couche supérieure.
1. Les connecteurs
font référence à l'interaction avec SQL dans différentes prédictions
Nactive C API, JDBC, ODBC, PHP. , Python, Perl, Ruby, VB
2. Services et utilitaires de gestion d'entreprise
Outils de gestion et de contrôle du système
Sauvegarde et récupération, sécurité, réplication, cluster, partitionnement, gestionnaire d'instance, INPORMATICN_SCHEMA, administrateur , Workbench, Query Browser, Migration Toolkit
3. Le pool de connexions
gère la mise en mémoire tampon des connexions utilisateur, le traitement des threads et d'autres besoins nécessitant une mise en cache.
Responsable de la surveillance de diverses requêtes au serveur MySQL, de l'acceptation des demandes de connexion et de la transmission de toutes les demandes de connexion au module de gestion des threads.
Chaque demande client connectée au serveur MySQL se verra attribuer (créée) un thread de connexion pour le servir séparément, et le thread de connexion est mis en cache, il n'est donc pas nécessaire de créer et de détruire chaque connexion client séparément. le thread de connexion doit communiquer entre le serveur MySQL et le client, recevoir les demandes de commande du client et transmettre les informations de résultat du serveur. Le module de gestion des threads est responsable de la gestion et de la maintenance de ces threads de connexion, y compris la création de threads, le cache de threads, etc. .
Authentification -Réutilisation des threads - Limites de connexion - Vérifier la mémoire -Caches
4.Interface SQL (interface SQL)
Accepte la commande SQL de l'utilisateur et renvoie les résultats que l'utilisateur doit interroger. Par exemple, sélectionnez parmi pour appeler l'interface SQL
DML, DDL, procédures stockées, vues, déclencheurs, etc
5.Parser (analyseur)
Lorsque la commande SQL est transmise à l'analyseur, elle sera vérifié et analysé par l'analyseur, l'analyseur Il est implémenté par Lex et YACC. Dans MySQL, nous avons l'habitude d'appeler toutes les commandes envoyées par le client côté serveur, appelées requêtes. une fois que le fil de connexion reçoit une requête du client, il transmettra la requête directement au module chargé de classer les différentes requêtes, puis les transmettra aux modules de traitement correspondants
Fonctions principales :
a. Effectuez une analyse sémantique et syntaxique des instructions SQL, décomposez-les en structures de données, puis classez-les selon le même type d'opération et effectuez un transfert ciblé vers les étapes suivantes. La livraison et le traitement ultérieurs des instructions SQL seront basés sur. cette structure.
b. Si une erreur est rencontrée dans la décomposition, cela signifie que l'instruction SQL est déraisonnable
Traduction de requête, privilège d'objet
6. l'instruction est interrogée, l'optimiseur de requête est utilisé pour optimiser la requête, c'est-à-dire optimiser la requête de requête du client sur la base de l'instruction de requête demandée par le client et de certaines informations statistiques dans la base de données, elle est analysée sur la base d'une série d'algorithmes. pour obtenir une stratégie optimale, indique au programme suivant comment obtenir le résultat de cette instruction de requête, en utilisant la stratégie "select-projection-join" pour la requête ;
Par exemple : sélectionnez uid, nom de l'utilisateur où sexe =1;
Cette instruction de requête sélectionne d'abord en fonction de l'instruction après où, au lieu d'interroger d'abord toutes les tables, puis de filtrer le sexe, puis effectue une projection d'attribut basée sur l'uid et le nom, au lieu de supprimer tous les attributs, puis effectuer un filtre, et enfin connecter ces deux conditions de requête pour générer le résultat final de la requête
7.Cache et tampon (cache de requêtes)
La fonction principale est de soumettre le client au Sélectionnez la classe de Mysql L'ensemble de résultats renvoyé par la requête de requête est mis en cache en mémoire et correspond à une valeur de hachage de la requête. Après toute modification des données dans la table de base des données obtenues par la requête, MySQL invalidera automatiquement le cache de. la requête. Dans les systèmes d'application avec un taux d'écriture très élevé, Query Cache peut améliorer considérablement les performances, mais bien sûr, il consomme beaucoup de mémoire.
S'il existe un résultat de requête valide dans le cache de requêtes, l'instruction de requête peut extraire directement les données du cache de requêtes. Ce mécanisme de cache est composé d'une série de petits caches, tels que le cache de table et le cache d'enregistrement. , et cache de clés. , cache d'autorisations, etc.
8. Moteurs de stockage enfichables (moteur de stockage enfichable)
Flux de travail de base de données
Établir une connexion TCP——>Vérifier l'utilisateur——>Créer un thread pour analyser SQL——>Générer un plan d'exécution——>Ouvrir la table——>Rechercher dans le tampon pour voir quoi dont vous avez besoin Que la page de données soit mise en cache——>Analyser les données à partir du disque——>Obtenir des données et écrire dans le pool de mémoire tampon——>Renvoyer les données au client——>Fermer la table——>Fermer le fil de discussion——> Fermer la connexion3. S'il n'y a aucun résultat dans le cache de requête, vous devez interroger la couche du moteur de base de données et envoyer l'instruction SQL à l'optimiseur pour optimiser la requête. S'il s'agit d'un changement de table, la classification est transmise pour insertion, mettre à jour, supprimer, créer, traiter les alertes Module de traitement2. l'opération de requête, l'utilisateur doit être appelé. Le module effectue une vérification d'autorisation pour vérifier si l'utilisateur a l'autorisation. Après l'avoir transmis, le service est fourni et le thread de connexion commence à accepter et à traiter l'instruction SQL du client. couche : service principal. 1. Fil de connexion Après avoir reçu l'instruction SQL, l'instruction est transmise au module d'analyse des instructions SQL pour l'analyse syntaxique et sémantique.
2. S'il s'agit d'une instruction de requête, vous pouvez d'abord vérifier s'il y a un résultat dans le cache de requête. S'il y a un résultat, il sera renvoyé directement au client.
3. seront chargés dans le cache pour rendre les requêtes ultérieures plus efficaces. En raison du cache limité, des tables LRU flexibles sont souvent utilisées pour gérer les pages du cache afin de garantir un accès fréquent aux données mises en cache.1. Ouvrez la table et obtenez le verrou correspondant si nécessaire.
2. Vérifiez d'abord s'il y a des données correspondantes dans la page de cache. S'il y en a, elles peuvent être renvoyées directement. Sinon, lisez-les à partir du disque.
4. Enfin, après avoir obtenu les données, renvoyez-les au client, fermez la connexion et libérez le fil de connexion.
1. Qu'est-ce qu'un moteur de stockage plug-in
Un moteur de stockage lit et écrit des données sur le disque. Différents moteurs de stockage ont des opérations de lecture et d'écriture différentes, les transactions, les verrous, etc. Nous avons des besoins commerciaux différents, il y aura donc de nombreux moteurs de stockage dans une base de données, car le moteur de stockage est basé sur des tables, différentes tables peuvent avoir différents moteurs de stockage, permettant au moteur de stockage d'être chargé sur le serveur MySQL en cours d'exécution. est le moteur de stockage du plug-in
2. Qu'est-ce que le cache LRU
Un algorithme de stratégie de mécanisme d'élimination du cache, car la mémoire cache est toujours limitée, donc lorsque le cache est plein, certains contenus doivent être supprimés et du nouveau contenu sous Dans le mécanisme LRU, les données éliminées sont appelées données inutiles. Le nom complet de LRU est Les moins récemment utilisées, ce qui signifie que nous pensons que les données qui ont été utilisées récemment sont utiles, et les données qui n'ont pas été utilisées depuis longtemps. devrait être inutile. Oui, lorsque la mémoire est pleine, les données qui n'ont pas été utilisées depuis longtemps seront d'abord supprimées
La stratégie de mise en cache d'Ehcache dans la JVM inclut
LRU - le moins récemment. utilisé (le moins récemment utilisé)
LFU - le moins fréquemment utilisé (le moins fréquemment utilisé)
FIFO - premier entré, premier sorti, l'élément le plus ancien par heure de création (efface les premières données mises en cache, peu importe qu'elles soient est fréquemment utilisé)
Apprentissage recommandé : Tutoriel 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!