Cet article vous apporte des connaissances pertinentes sur mysql, qui présente principalement des problèmes liés aux mots-clés, notamment trois formes normales, des jeux de caractères, des quantités personnalisées, des vues, des tables de partition, etc., comme suit Jetons un coup d'œil, j'espère que ce sera le cas être utile à tout le monde.
Apprentissage recommandé : Tutoriel vidéo mysql
Le jeu de caractères spécifie le stockage ; format des caractères dans la base de données, comme la prise en compte de la quantité d'espace, des caractères pris en charge, etc. Différents jeux de caractères ont des règles de codage différentes. Dans certains cas, il existe même des règles de relecture qui font référence au tri d'un jeu de caractères. Dans le fonctionnement, la maintenance et l'utilisation de la base de données MySQL, il est très important de sélectionner le caractère approprié. Si la sélection est inappropriée, les performances de la base de données peuvent au moins être affectées et le stockage des données peut être tronqué dans les cas graves.
Il existe principalement quatre jeux de caractères MySQL courants :
Jeu de caractères | Longueur | Instructions |
---|---|---|
GBK | 2 | prend en charge le chinois, mais n'est pas un jeu de caractères international. |
UTF-8 | 3 | prend en charge des scénarios mixtes chinois et anglais et est un jeu de caractères universel international |
latin1 | 1 | Jeu de caractères MySQL par défaut |
utf8mb4 | 4 | entièrement compatible avec UTF- 8, utilisez quatre octets pour stocker plus de caractères |
Dans le développement et l'exploitation de la base de données MySQL, les règles de sélection du jeu de caractères sont les suivantes :
SET @last_week := CURRENT_DATE-INTERVAL 1 WEEK;SELECT id,name from user where create_time > @last_week;
Remarques sur l'utilisation de variables personnalisées :
Si vous mettez à jour la ligne ; En même temps, si je souhaite obtenir des informations sur cette ligne, que puis-je faire pour éviter les requêtes répétées ?
Cela se fait généralement :
update user set update_time = now() where id = 1;select update_time from user where id = 1;
L'utilisation de variables personnalisées peut l'optimiser :
update user set update_time = now() where id = 1 and @now := now();select @now;
Cela ressemble toujours à deux requêtes, mais la deuxième requête n'a pas besoin d'accéder à des tables de données, elle sera donc beaucoup plus rapide.
Si la requête contient des colonnes NULLable, il est plus difficile à optimiser pour MySQL car les colonnes NULLable rendent les index, les statistiques d'index et les comparaisons de valeurs plus complexes. Les colonnes compatibles NULL utilisent plus d'espace de stockage et nécessitent un traitement spécial dans MySQL. Lorsque les colonnes compatibles NULL sont indexées, chaque enregistrement d'index nécessite un octet supplémentaire, ce qui peut même entraîner une taille fixe dans MyISAM. .
La vue table unique est généralement utilisée pour les requêtes et les modifications, ce qui modifiera les données de la table de base. La vue multi-tables est généralement utilisée pour les requêtes et ne modifiera pas les données de la table de base.
Le but de l'utilisation des vues est d'assurer la sécurité des données et d'améliorer l'efficacité des requêtes.
Lorsque vous utilisez des tables de cache et des tables récapitulatives, vous devez décider si vous souhaitez conserver les données en temps réel ou les reconstruire périodiquement. La meilleure solution dépend de l'application, mais une reconstruction régulière permet non seulement d'économiser des ressources, mais empêche également la table d'être fragmentée et d'avoir des index entièrement organisés de manière séquentielle.
Lors de la reconstruction des tables récapitulatives et des tables de cache, il est généralement nécessaire de s'assurer que les données sont toujours disponibles pendant les opérations. Cela doit être réalisé en utilisant une table fantôme. La table fantôme fait référence à une table créée derrière la table réelle. la construction est terminée. Après l'opération de table, la table fantôme et la table d'origine peuvent être commutées via une opération de renommage atomique.
Afin d'améliorer la vitesse de lecture, nous construisons souvent des index supplémentaires, ajoutons des colonnes redondantes ou même créons des tables de cache et des tableaux récapitulatifs. Ces méthodes augmenteront la charge d'écriture et nécessiteront des tâches de maintenance supplémentaires, mais lors de la conception d'une base de données hautes performances. , Il s'agit de techniques courantes qui, bien que ralentissant les opérations d'écriture, améliorent considérablement les performances de lecture.
Normalement, les données d'une même table sont stockées ensemble au niveau physique. À mesure que l’entreprise se développe, lorsque la quantité de données dans une même table devient trop importante, cela entraînera des désagréments en matière de gestion. La fonction de partition peut diviser physiquement une table en plusieurs partitions en fonction de certaines règles. Plusieurs partitions peuvent être gérées séparément ou même stockées sur différents disques/systèmes de fichiers pour améliorer l'efficacité.
Les données peuvent être stockées sur des disques, adaptées au stockage de grandes quantités de données
La gestion des données est très pratique, l'exploitation des données dans des partitions, sans affecter le fonctionnement normal des autres ; partitions ;
Vous pouvez restreindre la portée de la requête et améliorer les performances de la requête en verrouillant la fonction de partition pendant la requête ;
Cependant, dans certains scénarios, les clés étrangères amélioreront certaines performances. Par exemple, si vous souhaitez vous assurer que deux tables liées ont toujours des données cohérentes, l'utilisation de clés étrangères est bien plus performante que la vérification de la cohérence dans l'application. Les clés étrangères sont également plus efficaces pour supprimer et mettre à jour les données associées que pour les conserver dans l'application. Cependant, les opérations de maintenance des clés étrangères sont effectuées ligne par ligne, et ces mises à jour seront plus lentes que les suppressions et mises à jour par lots.
Les contraintes de clé étrangère nécessitent un accès supplémentaire à d'autres tables lors des requêtes, ce qui nécessite des verrous supplémentaires. Si un enregistrement est écrit dans la table enfant, la contrainte de clé étrangère amènera InnoDB à vérifier l'enregistrement correspondant de la table parent, ce qui signifie que l'enregistrement correspondant de la table parent doit être verrouillé pour garantir que cet enregistrement ne sera pas perdu. une fois la transaction terminée. Cela peut entraîner des attentes de verrouillage supplémentaires et même des blocages. Puisqu’il n’existe pas d’accès direct à ces tables, ce type de blocage est difficile à résoudre.
Ainsi, dans de nombreux projets en cours, les clés étrangères ne sont plus utilisées pour des raisons de performances.
Le système de cache de requête suivra chaque table impliquée dans la requête. Si ces tables changent, toutes les données mises en cache liées à cette table seront invalides. Ce mécanisme semble relativement inefficace car la table de données peut ne pas avoir de changement. impact sur les résultats de la requête, mais le coût de cette implémentation simple est très faible, ce qui est très important pour un système très occupé.
(2) Soyez prudent lorsque vous utilisez le cache de requêtes
La requête de lecture doit d'abord vérifier si elle atteint le cache avant de s'exécuter ;
Une procédure stockée est un ensemble d'instructions SQL pour remplir une fonction spécifique. Elle est compilée et enregistrée dans la base de données en spécifiant le nom. de la procédure stockée. Et donnez la valeur du paramètre, vous pouvez également renvoyer le résultat.
Réduire le trafic réseau
Améliorer la vitesse d'exécution
Réduire le nombre de connexions à la base de données
Haute sécurité
Haute réutilisabilité
Mauvaise portabilité
Les instructions au sein d'une transaction sont soit toutes exécutées, soit pas exécutées du tout. Les transactions ont des caractéristiques ACID, qui représentent l'atomicité, la cohérence, l'isolement et la durabilité.
Une transaction doit être considérée comme une unité de travail minimale indivisible. Toutes les opérations de la transaction entière sont soit entièrement exécutées et soumises avec succès, soit toutes sont annulées sans échec.
La base de données passe toujours d'un état cohérent à un autre état cohérent.
Les modifications apportées par une transaction ne sont pas visibles par les autres transactions avant d'être finalement soumises.
Une fois la transaction soumise, les modifications apportées seront enregistrées définitivement dans la base de données.
L'index est une structure de données utilisée par le moteur de stockage pour trouver rapidement des enregistrements. Je pense que le point de connaissance le plus important de la base de données est l'index.
Les moteurs de stockage utilisent les index B-Tree de différentes manières, et leurs performances sont également différentes, chacune avec ses propres avantages et inconvénients. Par exemple, MyISAM utilise la technologie de compression de préfixe pour réduire la taille de l'index, mais InnoDB le stocke dans le format de données d'origine. Les index MyISAM référencent les lignes indexées par l'emplacement physique des données, tandis qu'InnoDB référence les lignes indexées par leur clé primaire.
B-Tree signifie généralement que toutes les valeurs sont stockées dans l'ordre et que chaque page feuille est à la même distance de la racine.
L'index B-Tree peut accélérer l'accès aux données, car le moteur de stockage n'a plus besoin d'effectuer une analyse complète de la table pour obtenir les données requises, mais recherche plutôt à partir du nœud racine de l'index. Les emplacements du nœud racine stockent des pointeurs vers les nœuds enfants, et le moteur de stockage effectue une recherche vers le bas en fonction de ces pointeurs. En comparant la valeur de la page du nœud avec la valeur que vous recherchez, vous pouvez trouver des pointeurs appropriés vers les nœuds enfants inférieurs. Ces pointeurs définissent en fait les limites supérieure et inférieure des valeurs dans la page du nœud enfant. Finalement, le moteur de stockage trouve la valeur correspondante ou l'enregistrement n'existe pas.
Les nœuds feuilles sont spéciaux, leurs pointeurs pointent vers les données indexées, pas vers d'autres pages de nœuds. B-Tree organise et stocke les colonnes d'index de manière séquentielle, il est donc très approprié pour rechercher des données de plage. B-Tree convient à la recherche de valeurs de clé complètes, de plages de valeurs de clé ou de préfixes de clé.
Étant donné que les nœuds de l'arborescence d'index sont ordonnés, en plus de rechercher par valeur, l'index peut également être utilisé pour trier par opérations dans les requêtes. D'une manière générale, si un B-Tree peut trouver une valeur d'une certaine manière, il peut également être utilisé pour trier de cette manière.
Le but de l'index de texte intégral est de filtrer les requêtes par correspondance de mots clés, basées sur des requêtes de similarité, plutôt que sur des requêtes précises.
L'index de texte intégral utilise la technologie de segmentation de mots pour analyser la fréquence et l'importance de certains mots-clés dans le texte et filtre intelligemment les résultats souhaités selon un certain algorithme.
L'index de texte intégral est généralement utilisé pour interroger certains mots-clés dans des chaînes, tels que char, varchar et text. Il prend également en charge l'index de texte intégral en langage naturel et l'index de texte intégral booléen.
Apprentissage recommandé : 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!