Maison  >  Article  >  base de données  >  Introduction détaillée au principe de fonctionnement de MySQL

Introduction détaillée au principe de fonctionnement de MySQL

王林
王林avant
2019-08-21 14:09:173910parcourir

1. Composants de Mysql

Mysql comprend une interface SQL, un analyseur, un optimiseur, un cache et un moteur de stockage.

2. Diagramme du principe de fonctionnement de Mysql

Introduction détaillée au principe de fonctionnement de MySQL

3. Description de chaque composant du diagramme schématique de Mysql

3-1 : les connecteurs

interagissent avec les instructions SQL dans d'autres langages de programmation, tels que php, java, etc.

3-2 : Services et utilitaires de gestion

Outils de gestion et de contrôle du système

3-3, Pool de connexions (Pool de connexions)

Gérer les utilisateurs du tampon Connexion, traitement des threads et autres exigences nécessitant une mise en cache

3-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électionner parmi consiste à appeler l'interface SQL

3-5, Parser (analyseur)

Lorsque la commande SQL est transmise à l'analyseur, elle sera vérifiée et analysée par l'analyseur.

Principales fonctions de l'analyseur :

a. Décomposer l'instruction SQL en une structure de données et transmettre cette structure aux étapes suivantes. La transmission et le traitement ultérieurs des instructions SQL sont basés sur cette structure<.>

b. Si une erreur est rencontrée lors de la décomposition, cela signifie que l'instruction SQL est déraisonnable et que l'instruction ne continuera pas à être exécutée

Optimiseur (optimiseur de requête)

L'instruction SQL utilisera l'optimiseur de requête pour optimiser la requête avant l'interrogation (générant plusieurs plans d'exécution, et enfin la base de données choisira le plan le plus optimisé à exécuter et renverra les résultats dès que possible). Il utilise "select- stratégie de projection" -Join" pour les requêtes.

Vous pouvez le comprendre avec un exemple : select uid,name from user Where Gender = 1 ;

Cette requête de sélection sélectionne d'abord en fonction de l'instruction Where, au lieu d'interroger d'abord toutes les tables. Effectuer un filtrage par sexe

Cette requête de sélection effectue d'abord une projection d'attributs basée sur l'uid et le nom, au lieu de supprimer tous les attributs, puis de filtrer

Connectez ces deux conditions de requête pour générer le résultat final de la requête <.>

3-7. Cache et tampon (cache de requêtes)

Si le cache de requêtes a un résultat de requête positif, l'instruction de requête peut récupérer directement les données du cache de requêtes.

Ce mécanisme de mise en cache est composé d'une série de petits caches. Par exemple, le cache de table, le cache d'enregistrement, le cache de clé, le cache d'autorisation, etc.

3-8 Moteur (moteur de stockage)

Le moteur de stockage est le sous-système spécifique de MySql qui s'occupe de. fichiers, et MySQL est également l'un des endroits les plus uniques.

Le moteur de stockage de MySQL est un plug-in. Il personnalise un mécanisme d'accès aux fichiers basé sur une interface abstraite de la couche d'accès aux fichiers fournie par MySql AB (ce mécanisme d'accès est appelé moteur de stockage).

4. Processus d'exécution des instructions SQL

La base de données n'est généralement pas utilisée directement. Au lieu de cela, d'autres langages de programmation appellent mysql via des instructions SQL, qui sont traitées par mysql. et renvoyé pour résultat d'exécution. Alors, comment Mysql traite-t-il l'instruction SQL après l'avoir reçue ?

Premièrement, la requête du programme interagira avec lui via les connecteurs mysql. Une fois la requête arrivée, elle sera temporairement stockée dans le pool de connexions et gérée par le processeur (

). Lorsque la requête entre dans la file d'attente de traitement à partir de la file d'attente, le gestionnaire envoie la requête à l'interface SQL (

). Une fois que l'interface SQL a reçu la requête, elle hachera la requête et la comparera avec les résultats dans le cache. S'il y a une correspondance complète, le résultat du traitement sera renvoyé directement via le cache ; sinon, un processus complet sera requis :

Management Serveices & Utilities (1) L'interface SQL est renvoyée à l'interpréteur suivant (Parser). L'interpréteur déterminera si l'instruction SQL est correcte ou non, et si elle est correcte, elle la convertira en une structure de données. SQL Interface

(2) Une fois l'interpréteur traité, il s'agit de l'optimiseur (Optimizer), qui générera plusieurs plans d'exécution. En fin de compte, la base de données choisira le plan d'exécution le plus optimisé et renverra les résultats sous forme. le plus tôt possible.

(3) Après avoir déterminé le plan d'exécution optimal, l'instruction SQL peut être transmise au moteur de stockage (Engine) pour traitement. Le moteur de stockage obtiendra les données correspondantes du périphérique de stockage principal et les retournera. au chemin d'origine du programme.

5. Remarque

(1) Comment mettre en cache les données de requête

Le moteur de stockage traite les données et les renvoie au programme Dans le même temps, il conservera également une copie des données dans le cache afin que la prochaine même demande puisse être traitée plus rapidement. La situation spécifique est que MySQL hachera l'instruction de requête, les résultats d'exécution, etc., et les conservera dans le cache, en attendant la prochaine requête.

(2) La différence entre tampon et cache

Comme vous pouvez le voir sur le diagramme schématique de MySQL, il y a en fait deux tampons et caches dans le cache, donc la différence entre eux :

Pour faire simple, le tampon est un cache en écriture et le cache est un cache en lecture.

(3) Comment déterminer si les données requises ont été mises en cache dans le cache

Il peut y avoir un malentendu ici lors du traitement des instructions SQL, afin de déterminer si les résultats de la requête ont été. mis en cache, l'ensemble du processus sera parcouru à nouveau, obtiendra le résultat de l'exécution, puis le comparera avec celui requis pour voir s'il y a un succès. De cette façon, puisque l'ensemble du processus doit être parcouru, que la requête soit ou non. le contenu est mis en cache dans le cache, quel est l'avantage de la mise en cache ?

En fait, ce n'est pas le cas. Après la première requête, mysql hachera l'instruction de requête et les résultats de la requête et les conservera dans le cache. Une fois la requête SQL arrivée, elle sera hachée de la même manière. . Les deux valeurs de hachage sont comparées. Si elles sont identiques, c'est un succès et le résultat de la requête est renvoyé depuis le cache. Sinon, l'ensemble du processus doit être répété.

J'espère que cet article pourra aider les étudiants qui apprennent les bases de données. S'il y a quelque chose qui ne va pas dans l'article, veuillez le signaler. Merci beaucoup !

Pour plus de questions liées à Mysql, veuillez visiter le site Web PHP chinois : Tutoriel vidéo 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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer