Il s'agit d'une compréhension profonde du module partiel de MySQL, la plupart d'entre eux sont la théorie, fournissant la réserve de connaissances théoriques pour les petits partenaires, qui préparent MySQL pour avoir soulevé de haut.
Premièrement, le module de base de la base de données relationnelle
Les modules suivants ne sont pas nécessairement le module réel du muscle la base de données principale, mais ils comprennent presque le Architecture de la base de données.En plus du matériel, les pièces de stockage comprennent des disques et des pièces logicielles sont principalement divisées en modules:
Gestion de stockage
: Pour gérer le formatage des données, trier des données physiques via des formulaires logiques , ce qui signifie que les données sont en réalité un disque physique, vous devez effectuer un gestionnaire d'organisation logique au niveau du logiciel. Mécanisme de cache : Un problème majeur affectant les performances de la base de données est IO, ce qui le remettez donc de données en mémoire et de retour directement à partir de la mémoire. Même maintenant des disques d'état solidesTrès rapide est beaucoup plus que la vitesse de la mémoire.
SQL Ansing : Retirez SQL en langues lisibles.
Gérer le journal : Enregistrez l'activité de l'utilisateur sur la base de données.
Droits : Layout, les fonctions sont très courantes, divisent différents utilisateurs en différents rôles et droits opérationnels sont différents. Mécanisme de bonbons
: Cette section est plus compliquée, comment restaurer lorsque la base de données se produit lorsque la base de données a une catastrophe inhabituelle. Index Manager : Optimiser l'effet de la requête de la base de données.
Lock Gestion : Faites de la base de données pour prendre en charge l'opération simultanée.
Lundi, la mise en œuvre de MySQL Index, B + Tree
L'indice peut optimiser l'efficacité de la requête de la base de données, les requêtes courantes sont traçées Problème de table complet, lorsque les données affectent sérieusement les performances lorsqu'elles est trop large.
et index comme un répertoire du dictionnaire, augmentant l'efficacité de la requête lorsqueGrande capacité, mais s'il met régulièrement mis à jour ou supprimer des données, il doit également conserver des index, mais réduira les performances. Par conséquent, l'indice
ne devrait pas être trop.
Index est en fait un fichier. Étant donné besoin d'une recherche efficace, il est certainement besoin d'une bonne structure de données, liée à l'indice, il y a des arbres binaires
B, des arbres binairesen attente, ici uniquement des arbres B + de MySQL.
Pourquoi choisir B + Tree?
Une caractéristique de l'arborescence B + est une touche feuille avec un pointeur de chaîne pointant sur le bouton de la feuille suivant, plus il est commandé, nous avons donc une requête de gamme, aucun terme en tant que requête et gt; 10 Données, il suffit de trouver 10 d'abord, puis directement à travers le pointeur du nœud feuille et d'autres structures qui doivent être trouvées à partir du nœud racine.
Troisièmement, le principe de correspondant maximal
indice combiné, certains sont des index combinés, certains sont appelés index synthétiques et index échecs du problème, cela signifie peut-être que cela signifie que cela signifie qu'il contientCela signifie que cela signifie , cela signifie que cela signifie , cela signifie que cela signifie , cela signifie que cela signifie , cela signifie que cela signifie , cela signifie que cela signifie , cela signifie que cela signifie , cela signifie que cela signifie que cela signifie , cela signifie que cela signifie , cela signifie que cela signifie , cela signifie que cela signifie cela signifie qu'il ne signifie que cela signifie que cela signifie que cela signifie que cela signifie que cela signifie que cela signifie que cela signifie que cela signifie que cela signifie que cela signifie que cela signifie que cela signifie que cela signifie.
1. Une table avec un champ A, B, lorsque nous avons besoin d'une requête dedans A = XXX "et B = 'xxx', dans ce cas, nous pouvons utiliser l'index partagé.
Le principe de la correspondance de gauche est lorsque l'index est créé, cette commande est la suivante
où A est à gauche, puis Si nous interrogeons uniquement un indice de combinaison qui sera utilisé pour interroger B et cet indice de liaison ne sera pas utilisé.
2. De plus, dans l'indice général, MySQL correspondra de gauche à droite jusqu'à la réunion et la GT; & Lt; Milieu, comme ça s'arrête.
Exemple: il y a quatre écoles A,B, C, D dans l'indice général. Dans lequel A = 1 et B = 2 et C & GT; 3 et d = 4. ABC utilisera des index et D ne le fera pas. Si la position de C, D est échangée lors de l'indexation, ABCD utilisera l'index, le côté droit de la gauche sur la commande spécifiée, comment commander lors de la commande ? Impact
(car l'optimisation de la requête MySQL nous aidera à optimiser l'ordre de requête).
alter table TABLENAME add index index_name(A,B)
Le principe du principe de correspondant gauche La couche inférieure de l'index est B + arbre, l'indice général est le même. Toutefois, L'index combiné a de nombreuses valeurs et les arbres B + n'a besoin que d'une valeur,
MySQL Sélectionnez le champ le plus à gauche à gauche est la valeur.L'image ci-dessus est l'arbre B + sous l'indice général. Si les champs correspondent à (A, B) et la valeur d'A sont disposés (1, 1, 2, 2, 3, 3), B est un trouble (1, 2, 1, 4, 1, 2), donc lorsque Nous trouvons b = 2, il ne peut pas être obtenu par indexation.
pour caCe y B + est formé par la valeur d'A, la valeur de B est complètement incompatible avec les arbres B +, de sorte qu'il ne peut donc pas être trouvé séparément.
alter table TABLENAME add index index_name(A,B,C,D)-->alter table TABLENAME add index index_name(A,B,D,C)
Pourquoi puis-je trouver B après avoir trouvé une première personne?
Tout le monde a observé cet arbre avec soin, à une distance égale, B était ordonné.
De plus, pourquoi avez-vous une requête de gamme pour arrêter? Gamme de requêtes pour toutes les tables complets, non sur le champ gauche, juste une distance ordonnée.Four, MySQL Deux moteurs: Myisam et InnoDB
MyISAM: Il s'agit d'un indice qui ne collecte pas, ne prend pas en charge les transactions, ne supporte que le niveau de table de support Verrouiller
InnoDB: En tant qu'index de la collecte, les transactions justificatives, la valeur par défaut est le niveau de verrouillage, niveau de support de support
.
un par un.
1. Synthèse
Les commandes physiques et les valeurs de colonne des flux de données (généralement, les serrures de clé), la commande logique est la même et une table CPeut-il y avoir un indicateur collecté. L'ordre raisonnable de la valeur de verrouillage de l'indice détermine l'ordre physique de la ligne correspondante dans la table.
Il existe un exemple typique sur Internet, qui est le répertoire principal de l'indice collecté. Les données proviennent de l'intérieur du dictionnaire. Le dossier financier est trié dans un certain ordre, puis par derrière le dictionnaire doit également être organisé dans la commande principale.
Lorsque nous insérons un nouveau caractère chinois à Pinyin B, tous les caractères chinois se déplacent en arrière et ne peuvent pas ajouter la fin du dictionnaire car il est arrangé dans le son.Par conséquent, l'indice agrégé selon:
La requête de la plage, telle que & lt; et gt; =, Milieu, v.v. Et le groupe de groupe en conséquence, car les arbres B + sont donc ordonnés, l'efficacité du groupe est plus élevée.Non applicable pour: Les colonnes changent constamment.
2. L'indice ne synthétise pasOrdre logique de l'index dans d'autres index avec le L LPréférences physiques de la gamme. Un tableau peut avoir de nombreux nombres non synthétiques.
Index au même endroit, les données dans un lieu et l'index comportent un pointeur vers les données.
Ceci est physiquement reflété dans le répertoire de base de données, l'index existe. Myi Fichier, dans le fichier de données .MYD. Les index d'agrégats avancés, les données et les index de la surface sont dans le même fichier .ibd. La commande et l'index des données sont différentes.Pour que l'indice global soit appliqué sur: colonnes d'index modifiées régulières. 3. Table de verrouillage et serrure de la table
Deux serrures signifient littéralement.
Niveau de niveau de table, taille de particules maximale dans MySQL verrouillée, verrouillée toute la feuille de données
Détail minimum de la taille de particules minimale dans MySQL, seuls les flux fonctionnent dans cette table, d'autres lignes ne sont pas verrouillés, pour différentes opérations, la liste spécifique de la serrure est différente, dans la commande non confondante, tout le monde peut verrouiller les clés de niveau BEt la gamme de scène. Les serrures mentionnés ci-dessous sont considérées comme une classification spécifique. Lorsque les requêtes MyISAM : Ajoutent
pour lire la clé dans la
et le verrou général
Lorsque la lecture est ajoutée, d'autres SQL souhaitent l'augmenter, il sera bloqué et doit attendre la requête. La raison pour laquelle il s'appelle une clé partagée est que vous pouvez faire des demandes dans la même table.
Lorsque MyISAM a ajouté à la modification ajoutera écrire la clé de la plage de table et crier sa serrure
. Lors de l'ajout d'une clé, d'autres SQL seront bloqués si elles sont modifiées ou demandées. La raison d'une autre clé est que même si j'ai modifié les données de ligne 1-10, vous pouvez interroger les 11 données de ligne qui seront bloquées.
La situation du moteur Myisam est comme le moteur Myisam et la logique de la clé de journalisation est correcte, mais la plage de verrouillage est allumée.
Tout le monde testé dans MySQL, lorsque INNODB LOCK: Notez que InnoDB optimise SELECT, n'ajoute pas la clé de l'instruction SELECT, non bloquée.Les gens peuvent rester derrière la commande pour sélectionner le manuel de mode partagé plus la clé de lecture.
Étapes de test spécifiques:
Insérez des millions de données dans la table, ajoutés à portée de gamme, de sorte que l'environnement de congestion puisse être simulé lorsque la récurrence change plutôt. Supporte les transactions InnoDB, mais elle enverra automatiquement, mais également annuler automatiquement à l'aide de SET Autocommit = 0. Dans ce cas, il est de bloquer l'état4. Transaction
Signification Créer une opération multi-étapes avec des atomes . C'est-à-dire de nombreuses instructions SQL dans les transactions, avec succès ou échoué, il n'y a aucune situation dans laquelle une exécution réussie et des données incohérentes. Transactions Il existe quatre caractéristiques principales:
Atomique , la cohérence
mentionnée ci-dessus , l'intégrité de l'intégrité des données avant et arrière de l'intégrité doit être cohérente ] Lorsque plusieurs transactions utilisateur sont traitées, l'existence n'interférera pas les uns avec les autres , une fois que la transaction est fournie, elle modifiera le résultat de manière permanente Focus sur l'isolement. Que se passe-t-il s'il n'y a pas d'isolement entre les transactions? S'il existe une scène: la transaction A obtient des données sur 900 et une autre donnée B a été modifiée à 800 avant de négocier un et des rappels réussis. Les données de fonctionnement de la transaction A sont toujours 900 dans la requête et +100 sont formées 1000. Il est clair que le résultat est faux, c'est le problème de la perte de mises à jour. Ce problème n'est pas le même que multi-filetés en même temps, mais il n'y a pas de problème sans verrouillage. En fait, l'isolement de la transaction obtenue par une clé. Voir certains concepts d'isolement préalable: Lecture salale: La transaction de lecture de transaction B n'a pas été envoyée de données. Ne répète pas: Lorsque Trading A est interroger des données, la transaction B modifiera et envoie des données. À ce stade, transaction une trouvailleVoir les résultats avant et après de nombreuses questions découvertes. Suivez-nous, il semble y avoir peu importe ce que une transaction a modifié les données et les résultats de négociation. Mais il y a une question que la négociation d'A est de nombreuses questions, s'il n'a pas beaucoup de requêtes, faites-le directement dans le résultat de la première requête, puis il y aura un problème. Transactions: Transactions: Accès à un ensemble de données, la transaction B a modifié certaines données dans la collecte de données des transactions A, entraînant les résultats de la requête et les résultats réels. Après trois concepts pouvant comprendre de nombreux niveaux d'isolement: Plus le niveau d'isolement est élevé, plus la sécurité est élevée, le Plus de performances, plus les performances sont abaissées, des niveaux d'isolation différents sont situés selon l'activité réelle. Par exemple: Si la réglage du niveau d'isolement est séquentiellement, la transaction A est actionnée sur 1 à 10 lignes de tableaux. Pour le fonctionnement B, il sera bloqué même s'il s'agit de la peintureLa 11e ligne de Tablea est nécessaire pour mettre en place cette entreprise au niveau d'isolement auto-hygiénique.