Une brève discussion sur l'architecture globale de MySQL
Avant-propos
C'est encore une nouvelle semaine, bon lundi à tous.
En raison d'un changement d'emploi et de la recherche d'une maison, une série de choses ont été rapprochées, j'ai donc arrêté de mettre à jour pendant plus d'un mois récemment. Maintenant que tout est réglé, je peux coder en toute tranquillité.
D’accord, sans plus tarder, commençons un nouveau voyage. J'ai récemment lu le livre "MySQL Technology Insider - InnoDB Storage Engine", donc je veux juste l'enregistrer.
Schéma d'architecture globale
Jetons d'abord un coup d'œil au schéma d'architecture de MySQL pour en avoir une compréhension globale. MySQL est principalement divisé en quatre couches d'architecture, à savoir la couche de connexion réseau, la couche de service, la couche moteur de stockage et la couche physique. Les instructions SQL que nous écrivons habituellement et l'optimisation des instructions SQL se trouvent toutes dans la couche de service. Elle suit en fait certains principes afin que les instructions SQL puissent être exécutées en fonction de nos résultats attendus.
Introduction à chaque partie
La couche de connexion réseau
est principalement responsable de la gestion des connexions, de l'authentification des autorisations, de la sécurité, etc. Chaque connexion client correspond à un thread sur le serveur. Maintenez un pool de threads sur le serveur pour éviter de créer et de détruire des threads pour chaque connexion. Lorsqu'un client se connecte à un serveur MySQL, le serveur l'authentifie. Il peut être authentifié via un nom d'utilisateur et un mot de passe, ou via un certificat SSL. Après l'authentification de connexion, le serveur vérifiera également si le client a l'autorisation d'exécuter une certaine requête. Cette couche n'est pas une technologie propre à MySQL.
Couche de service
Cette couche est le cœur de MySQL, comprenant le cache de requêtes, l'analyseur, l'arbre d'analyse, le préprocesseur et l'optimiseur de requêtes.
Cache de requête
Avant la requête formelle, le serveur vérifiera le cache de requête et s'il peut trouver les requêtes correspondantes, il n'est pas nécessaire d'effectuer l'analyse des requêtes, l'optimisation, l'exécution et d'autres processus, et l'ensemble de résultats dans le cache est directement renvoyé.
Analyseur et préprocesseur
L'analyseur MySQL construira un arbre d'analyse basé sur l'instruction de requête Il est principalement utilisé Il est utilisé. pour vérifier si l'instruction est correcte en fonction de règles grammaticales, par exemple si les mots-clés SQL sont corrects et si l'ordre des mots-clés est correct.
Le préprocesseur sert principalement à une vérification plus approfondie, par exemple si le nom de la table et le nom du champ sont corrects, etc.
Optimiseur de requête
L'optimiseur de requête convertit l'arbre d'analyse en un plan de requête. En général, une requête peut être exécutée de plusieurs manières. et finalement renvoie le même résultat, l'optimiseur trouve le plan d'exécution optimal
plan d'exécution
après avoir terminé l'analyse Après l'optimisation Phase, MySQL appelle l'interface correspondante fournie par la couche moteur de stockage selon le plan d'exécution correspondant pour obtenir les résultats.
La couche moteur de stockage
est responsable du stockage et de la récupération des données MySQL. Elle fournit une série d'interfaces pour masquer les différences entre les différents moteurs.
注意:存储引擎是针对表的,而不是针对库。也就是说同一个库里面的不同表可以拥有不同的存储引擎。
Il existe deux moteurs de stockage courants, MyISAM et InnoDB. Examinons leurs différences.
Tout d'abord, nous créons une table test1 avec le moteur de stockage MyISAM.
create table test1( a INTEGER, b varchar(10) )ENGINE=MyISAM;
Nous pouvons aller dans le répertoire pertinent de MySQL pour voir son contenu réellement stocké et constater qu'il correspond à trois fichiers.
Deuxièmement, nous créons une table test2 avec le moteur de stockage InnoDB.
create table test2( a INTEGER, b varchar(10) )ENGINE=INNODB;
Jetons un coup d'œil à son contenu réellement stocké et constatons qu'il correspond à ce fichier.
Ensuite la question se pose, où sont stockés ses fichiers de données et ses fichiers d'index. Je vais vous laisser avec une question ici pour l'instant, et nous en parlerons dans le prochain chapitre, « Documents ».
La couche physique
stocke les données sur le disque dur.
Processus global
Nous envoyons une instruction SQL, à quoi ressemble le processus global dans MySQL ?
L'utilisateur établit d'abord une connexion avec le serveur via un client tel que Navicat. Un nom d'utilisateur et un mot de passe sont requis pour l'authentification, ou un certificat SSL peut être utilisé pour l'authentification.
Une fois la connexion réussie, MySQL déterminera si le rôle dispose d'autorisations sur certaines tables en fonction des autorisations correspondantes.
Si vous disposez des autorisations appropriées, lorsque l'utilisateur envoie une instruction de sélection de requête, MySQL interroge d'abord le cache. S'il existe déjà un cache pour cette instruction, il renverra directement If. non, exécutez le processus suivant. S'il s'agit d'une mise à jour, d'une nouvelle insertion ou d'une suppression, le cache ne sera pas interrogé et le processus suivant sera exécuté directement.
MySQL analysera l'instruction SQL dans une arborescence, puis la vérifiera, par exemple si les mots-clés sont corrects, si l'ordre des mots-clés est correct, si le nom de la table est correct, si les champs sont corrects , etc. Si l'authentification échoue, une erreur sera renvoyée directement. Si l'authentification réussit, passez directement au processus suivant.
MySQL effectue une optimisation des requêtes sur l'arbre d'analyse, car plusieurs SQL peuvent exprimer la même signification, mais le temps consommé peut varier considérablement. Par conséquent, MySQL trouve l'exécution optimale des instructions pour le moteur de stockage de la table, c'est-à-dire génère le plan d'exécution correspondant.
Utilisez le plan d'exécution généré ci-dessus pour appeler l'interface de la couche moteur de stockage. C'est l'explication que nous utilisons habituellement, qui peut être utilisée pour vérifier si l'index est indexé, le temps consommé et d'autres informations.
Différents moteurs de stockage se rendront à l'emplacement de stockage physique correspondant, trouveront les données correspondantes, les conditionneront et renverront le résultat.
Si vous obtenez le jeu de résultats et qu'il s'agit d'une instruction select, MySQL mettra les résultats dans le cache pour éviter la consommation de ressources causée par l'exécution de la même opération la prochaine fois, et les renverra à Résultat client. À ce stade, le processus d'exécution d'une instruction SQL est terminé.
Pour plus d'articles techniques liés à MySQL, veuillez visiter la colonne Tutoriel MySQL pour apprendre !
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Laravel est un cadre PHP pour la création facile des applications Web. Il fournit une gamme de fonctionnalités puissantes, notamment: Installation: Installez le Laravel CLI globalement avec Composer et créez des applications dans le répertoire du projet. Routage: définissez la relation entre l'URL et le gestionnaire dans Routes / web.php. Voir: Créez une vue dans les ressources / vues pour rendre l'interface de l'application. Intégration de la base de données: fournit une intégration prête à l'emploi avec des bases de données telles que MySQL et utilise la migration pour créer et modifier des tables. Modèle et contrôleur: le modèle représente l'entité de la base de données et le contrôleur traite les demandes HTTP.

MySQL et PHPMyAdmin sont de puissants outils de gestion de la base de données. 1) MySQL est utilisé pour créer des bases de données et des tables et pour exécuter des requêtes DML et SQL. 2) PHPMYADMIN fournit une interface intuitive pour la gestion des bases de données, la gestion de la structure de la table, les opérations de données et la gestion de l'autorisation des utilisateurs.

Par rapport à d'autres langages de programmation, MySQL est principalement utilisé pour stocker et gérer les données, tandis que d'autres langages tels que Python, Java et C sont utilisés pour le traitement logique et le développement d'applications. MySQL est connu pour ses performances élevées, son évolutivité et son support multiplateforme, adapté aux besoins de gestion des données, tandis que d'autres langues présentent des avantages dans leurs domaines respectifs tels que l'analyse des données, les applications d'entreprise et la programmation système.

J'ai rencontré un problème délicat lors du développement d'une petite application: la nécessité d'intégrer rapidement une bibliothèque d'opération de base de données légère. Après avoir essayé plusieurs bibliothèques, j'ai constaté qu'ils avaient trop de fonctionnalités ou ne sont pas très compatibles. Finalement, j'ai trouvé Minii / DB, une version simplifiée basée sur YII2 qui a parfaitement résolu mon problème.

Résumé de l'article: Cet article fournit des instructions détaillées étape par étape pour guider les lecteurs sur la façon d'installer facilement le cadre Laravel. Laravel est un puissant cadre PHP qui accélère le processus de développement des applications Web. Ce didacticiel couvre le processus d'installation des exigences du système à la configuration des bases de données et à la configuration du routage. En suivant ces étapes, les lecteurs peuvent jeter rapidement et efficacement une base solide pour leur projet Laravel.

Lors du développement d'un site Web de commerce électronique à l'aide de Thelia, j'ai rencontré un problème délicat: le mode MySQL n'est pas réglé correctement, ce qui fait que certaines fonctionnalités ne fonctionnent pas correctement. Après une certaine exploration, j'ai trouvé un module appelé TheliamysqlModeschecker, qui est capable de réparer automatiquement le motif MySQL requis par Thelia, résolvant complètement mes problèmes.

MySQL gère efficacement les données structurées par la structure de la table et la requête SQL, et met en œuvre des relations inter-tableaux à travers des clés étrangères. 1. Définissez le format de données et tapez lors de la création d'une table. 2. Utilisez des clés étrangères pour établir des relations entre les tables. 3. Améliorer les performances par l'indexation et l'optimisation des requêtes. 4. Bases de données régulièrement sauvegarde et surveillent régulièrement la sécurité des données et l'optimisation des performances.

MySQL est un système de gestion de base de données relationnel open source qui est largement utilisé dans le développement Web. Ses caractéristiques clés incluent: 1. Prend en charge plusieurs moteurs de stockage, tels que InNODB et Myisam, adaptés à différents scénarios; 2. Fournit des fonctions de réplication à esclave maître pour faciliter l'équilibrage de la charge et la sauvegarde des données; 3. Améliorez l'efficacité de la requête grâce à l'optimisation des requêtes et à l'utilisation d'index.
