Le 8 juin 2017, le temps était nuageux. L'ambiance est claire.
J'ai rêvé deux nuits de suite. Hier soir, j'ai rêvé d'un camarade de lycée que je n'avais pas contacté depuis longtemps. J'ai discuté avec lui en chemin. travailler le matin. La jeune fille est actuellement en voyage d'affaires au Guizhou, un endroit aux paysages magnifiques. J'ai dit : « Vous vivez une vie très prospère maintenant. » La fille a dit : "C'est parce que tu n'as pas vu mon côté non hydratant." En effet, dans la vie, nous montrons toujours notre bon côté aux autres et « déguisons » notre côté opprimé.
Hier, un blogueur m'a posé une question sur le blog et m'a même traité de "grand dieu". J'ai été très paniqué car je savais très bien que j'étais loin de ce "grand". Dieu", j'ai donc dû redoubler d'efforts et avancer vers l'objectif de la "grandeur".
La question posée par le blogueur concerne la base de données Mysql, qui implique le moteur de données et les instructions réparer et optimiser la table de données que j'ai. Je n'y ai jamais pensé auparavant. Problème, jamais utilisé. J'ai donc cherché des informations pour les comprendre, et maintenant je résume les informations que j'ai trouvées comme suit.
1. Moteur de stockage de base de données Mysql
Concept :
Le moteur de stockage est en fait comment stocker les données, comment indexer les données stockées et comment Méthodes de mise à jour, d'interrogation des données et autres implémentations techniques. Les données dans MySQL sont stockées dans des fichiers (ou dans la mémoire) à l'aide d'une variété de technologies différentes, chacune de ces technologies utilise différents mécanismes de stockage, techniques d'indexation, niveaux de verrouillage et fournit finalement un large éventail de fonctionnalités et de capacités différentes. Dans MySQL, ces différentes technologies et fonctions associées sont appelées moteurs de stockage.
(1) Moteur de stockage innoDB
①La table mysql du moteur de stockage innodb offre des capacités de transaction, de restauration et de réparation de crash du système ainsi que la sécurité des transactions du contrôle de concurrence multi-versions.
②innodb prend en charge les colonnes à incrémentation automatique (auto_increment). La valeur d'une colonne à incrémentation automatique ne peut pas être vide si elle est vide lorsqu'elle est utilisée, comment peut-elle croître automatiquement à partir de la valeur existante ? sera supérieur à la valeur actuelle. Si elle est toujours grande, cette valeur sera enregistrée.
③Le moteur de stockage innodb prend en charge les clés étrangères. La table où se trouve la clé étrangère est appelée table enfant (ou table esclave), et la table dont elle dépend est appelée table parent (ou table principale).
④La chose la plus importante à propos du moteur de stockage innodb est qu'il prend en charge les transactions et les fonctions liées aux transactions.
Le moteur de stockage ⑤innodb prend en charge les verrous au niveau des lignes mvcc.
⑥ L'index du moteur de stockage innodb utilise B+Tree.
(2) Moteur de stockage MyISAM
1) MyISAM Ce moteur de stockage ne prend pas en charge les transactions, ne prend pas en charge les verrous au niveau des lignes et ne prend en charge que les verrous de table insérés simultanément. Il est principalement utilisé pour. sélection à charge élevée.
2) La table de type MyISAM prend en charge trois structures de stockage différentes : statique, dynamique et compressée.
①Type statique : signifie que la taille de la colonne du tableau définie est fixe (c'est-à-dire qu'elle ne contient pas de types de données de longueur variable tels que xblob, xtext, varchar, etc. ), afin que mysql l'utilise automatiquement au format myisam statique.
Les performances des tables utilisant des formats statiques sont relativement élevées car la surcharge requise pour stocker les données dans un format prédéterminé lors de la maintenance et de l'accès est très faible. Mais cette haute performance s'obtient en échange d'espace, car elle est fixe lorsqu'elle est définie, donc quelle que soit la taille de la valeur dans la colonne, la valeur maximale prévaudra et occupera tout l'espace.
②Type dynamique : Si la colonne (même s'il n'y a qu'une seule colonne) est définie comme dynamique (xblob, xtext, varchar et autres types de données), alors myisam utilisera automatiquement le type dynamique.
Bien que les tables dynamiques occupent moins d'espace que les tables statiques, elles réduisent les performances car si le contenu d'un champ change, sa position devra probablement être déplacée, ce qui entraînera la génération de fragments. À mesure que les données changent, la fragmentation augmentera et les performances d'accès aux données diminueront en conséquence.
Il existe deux solutions pour réduire l'accessibilité des données en raison de la fragmentation :
a. Utilisez autant que possible des types de données statiques.
b. Utilisez fréquemment l'instruction optimise la table, qui défragmentera la table et récupérera l'espace perdu en raison des mises à jour et des suppressions de la table.
Si le moteur de stockage ne prend pas en charge l'optimisation de la table, vous pouvez vider et recharger les données, ce qui peut également réduire la fragmentation.
③Type compressé : Si une table est créée dans cette base de données qui est en lecture seule pendant tout le cycle de vie, dans ce cas, la table compressée de myisam est utilisée pour réduire l'utilisation de l'espace.
3) MyISAM utilise également l'index B+tree, mais il est légèrement différent d'Innodb dans une implémentation spécifique.
(3) Moteur de stockage MEMORY
①Le moteur de stockage en mémoire est un peu différent de certains moteurs de stockage précédents. Il utilise les données stockées en mémoire pour créer des tables, et toutes les données sont également stockées en mémoire.
②Chaque table basée sur le moteur de stockage mémoire correspond en fait à un fichier disque. Le nom de fichier et le nom de table du fichier sont les mêmes et le type est .frm. Ce fichier stocke uniquement la structure de la table et ses fichiers de données sont stockés en mémoire, ce qui favorise un traitement rapide des données et améliore les capacités de traitement de l'ensemble de la table.
③Le moteur de stockage mémoire utilise l'index de hachage (HASH) par défaut, ce qui est plus rapide que l'utilisation de B+Tree. Si les lecteurs souhaitent utiliser B-tree, ils peuvent le référencer lors de la création.
④Les données des fichiers du moteur de stockage en mémoire sont stockées en mémoire Si une exception se produit dans le processus mysqld, ces données disparaîtront si la machine est redémarrée ou arrêtée. Par conséquent, le cycle de vie des tables dans le moteur de stockage mémoire est très court et n’est généralement utilisé qu’une seule fois.
(4) Moteur de stockage BlackHole (moteur de trou noir)
prend en charge les transactions et prend en charge les verrous au niveau des lignes mvcc. Il est principalement utilisé pour la journalisation ou l'archivage synchronisé, à moins que ce moteur de stockage n'ait un spécial. but, sinon il n'est pas adapté à l'utilisation !
2. Optimiser et réparer les tables sous MySQL
Avec l'utilisation à long terme de mysql, il peut être optimisé en réparant la table. Lors de l'optimisation, l'espace disque occupé est réduit et la sauvegarde est effectuée. facilitée.
REPAIR TABLE `table_name` Réparer la table OPTIMIZE TABLE `table_name` Optimiser la table
REPAIR TABLE - utilisée pour réparer les tables endommagées.
OPTIMIZE TABLE——Optimiser la table, utilisée pour récupérer l'espace inactif de la base de données. Lorsque les lignes de données de la table sont supprimées, l'espace disque occupé n'est pas immédiatement récupéré. Après avoir utilisé la commande OPTIMIZE TABLE, l'espace sera récupéré et les lignes de données sur le disque seront réorganisées.
Remarque : il se trouve sur le disque, pas dans la base de données.
La plupart du temps, il n'est pas nécessaire d'exécuter OPTIMIZE TABLE. Il vous suffit d'effectuer une opération d'optimisation de table de données régulièrement (une fois par semaine ou une fois par mois) après avoir supprimé des lignes de données par lots, et de l'exécuter uniquement. sur ces tables spécifiques.
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!