Skip to main content


Bien entendu, cet article concerne l'optimisation des performances. L'optimisation des performances doit donc être une navette? Toujours un certain nombre de normes et de principes?

Donc, avant de commencer (optimisation MySQL), parlez de l'optimisation des performances


.

Premiers principes de classification et de performance

L'optimisation des performances peut souvent être divisée en:

Optimisation passive

Optimisation positive

fait référence à un comportement fait naturellement sans la motivation de . Par exemple: lorsque le service ne possède pas de calme clair, de l'exception matérielle ou matérielle,

optimisée auto-départ,
peut être appelée optimisation positive.


Optimisation passive

Seulement contraire à l'optimisation positive, ce qui signifie dans l'exploration des cartons de serveur, étape des exceptionsG Ce comportement est optimisé dans le cas.

Principe d'optimisation des performances:


S'il s'agit d'une optimisation positive ou d'une optimisation passive, doit respecter l'optimisation des performances de

. Principe:

L'optimisation ne peut pas modifier la logique des opérations de service afin de garantir l'exactitude du processus d'optimisation des services et les résultats doivent assurer la sécurité du service de sécurité pour assurer la stabilité du service,vous pouvez 't


, par exemple: Ne désactive pas la fonctionnalité des produits chimiques, car cela perdra. données stockées après le redémarrage ou l'alimentation du serveur ReDIS.
Le principe ci-dessus semble être des principes sans signification, mais c'est l'inspiration, c'est-à-dire que notre optimisation de la performance doit être:
Les problèmes de performance des blocs en supposant une optimisation clé + passif.


C'est, nous devrions

pour éviter les problèmesSous le résultat dans la phase de développement, évitez les problèmes de performance et
dans des circonstances normales, optimiser l'opération pour empêcher les risques inconnus (à moins que ce ne soit pour KPI, ou si nous ne savons rien, mais c'est surtout vrai pour l'environnement de production. Enfin, il est considéré comme une optimisation passive
.




PS: Lorsque la performance d'indicateur de performance lente ou de matériel est augmentée lentement, telle que la mémoire aujourd'hui, l'utilisation de 50%, demain est de 70% et le lendemain demain est de 90% et Lorsqu'il n'y a aucun signe de récupération, nous devrions explorer et traiter de tels problèmes précoces (c'est l'un des problèmes d'optimisation passive).

Deuxièmement, Optimiser les performances passives de MySQL

Par conséquent, nous nous concentrerons sur les connaissances sur l'optimisation des performances passives de MySQL, de manière optimale en fonction des performances passives. Connaissances, vous pouvez obtenir des méthodes de
à arrêter cLe problème de la performance

d'éviter les problèmes de performance de MySQL.
Cet article, nous allons commencer par le problème, puis envisager les causes de cette question et le diagramme d'optimisation correspondant. Dans le processus de développement réel, nous rencontrons souvent

ci-dessous:

Le fonctionnement SLOW SQL est lent

Certaines opérations SQL sont lentes Toutes les opérations SQL sont lentes



1, le fonctionnement SQL est seulement lent





Une cause commune d'opérations SQL unique plus lentes

Il y a deux:

la quantité des données dans le tableau est trop gros



(1) la créativité et l'index d'utilisation exacte

] ] L'indice

est un moyen majeur de

d'aider MySQL à améliorer l'efficacité de la requête , ainsi en général, le seul problème de performance SQL que nous rencontrons généralement en raison de non créé ou non.Utilisez l'élément correctement, donc dans le cas d'exécution SQL uniquement lentement, vous devez d'abord le faire avant de vérifier pour vérifier si l'index de cette table est normal. Si l'indice du tableau a été créé,

vérifiera si cet instruction SQL est activé ou non,

Si les cas suivants, MySQL n'utilisera pas normal Index:

Utilisé dans la clause WHERE! = Ou & lt; & Gt; Les opérateurs, la référence de requête renoncera à l'indexation et à l'ensemble de l'analyse;

Vous ne pouvez pas utiliser la requête de préambule de flou, est '% xx' ou '% xx%', car l'ouverture ne peut pas utiliser l'ordre dans lequel l'index ne peut pas être utilisé, vous devez voir s'il est satisfait, cela entraînera une numérisation. l'intégralité de l'indice ou une balayage de surface complète; Si disponible ou en termes, même si l'indice de la bande conditionnelle ne utilise pas l'index. Utilisation ou désirant effet d'indexation, vous ne pouvez ajouter que chaque colonne dans ou.Se battre pour une utilisation normale; Les écoles de la clause où la clause effectue des activités d'expression.

Vous devez donc éviter les cas ci-dessus, en plus des index d'utilisation normale, nous pouvons également utiliser les conseils suivants pour optimiser la vitesse de requête d'index:

Essayez d'utiliser la clé. Pour interroger, pas d'autres index, car la requête de serrure principale ne s'active pas à la requête arrière;
La déclaration de requête la plus simple peut, déclarer une destruction de la voix grande, réduire le temps de verrouillage;
Essayez d'utiliser un champ numérique, si seuls les champs contiennent des informations précieuses, essayez de ne pas concevoir comme type de caractère;

Remplacement de la question existait;
Éviter que l'utilisation est nulle et non nulle sur la colonne d'index.

Retour à la table: Après une requête d'index normale, après avoir été revenue à la recherche de l'arborescence d'indexation de clé principale, nous appelons la requête du panneau arrière.



(2) Séparation des données


lorsque la capacité de données dansLa table est trop grande, la requête SQL sera plus lente, vous pouvez envisager

diviser la table , laisser chaque table le nombre de données devient petite, améliorant ainsi l'effet de la requête.


Résolution verticale

fait référence aux tables de séparateur Étaler plusieurs polyvalences des tables pour des tables multiving.

Par exemple:

Certaines écoles de la table des utilisateurs sont généralement accessibles, placez ces champs dans la table et certains champs inutilisés d'une autre table, en utilisant des transactions pour assurer la cohérence de deux tables lors de l'insertion de données.

Principe de fractionnement vertical:

Mettez des champs étranges dans une table;

Texte, Blob, V.V ... L'école large est divisée en calendrier;
Le collectif combine la requête dans une table.

Chia Huong

désigne la séparation des lignes de la feuille de données, lorsque le nombre de lignes du tableau dépasse 200 000, il ralentira. À ce stade,

peut être stocké des cendresN une tables multiples avec plusieurs tables.

Normalement, nous utilisons

Mode de coulée
pour faire la table fractionnée.

Par exemple:

400W Tables d'utilisateurs, pour améliorer son efficacité de requête, nous l'avons divisé en 4 tableaux 1, les utilisateurs2, les utilisateurs3, les utilisateurs, puis échantillonnés en fonction de la méthode de l'utilisateur, de la requête simultanée, de la mise à jour, Supprimer est également actionné par une méthode de coulée.

Autres diagrammes d'optimisation des tableaux: L'utilisation de types de données peut être stocké dans le magasin;

Utilisation d'un type de données simple, INT est plus simple à manipuler dans MySQL que Varchar;

Essayez d'utiliser Tinyint, Smallint, en moyenne dans un type entier au lieu de Int;
Utilisez autant que possible le champ de définition non nulle, car NULL occupe 4 espaces d'octets;

Avec le type de texte, il est préférable de considérer la solution sans l'utiliser;

Essayez d'utiliser l'horodatage, pas la date d'heure; Non aussi nDe nombreux domaines, c'est donc dans 20 écoles.

2, certaines opérations SQL SQL

SQL fonctionnant lentement plus, nous devons d'abord être fait

première position
SQL, puis voir ces SQLS sont créées correctement et utilisez des index. En d'autres termes, nous devrions d'abord utiliser un outil de requête lente pour déterminer la position SQL spécifique. Ensuite, utilisez une solution de problème 1 pour gérer SQL lentement.

Solution







Analyse de requête lente:

MySQL est livré avec des journaux de journaux

Pour l'ouvrir à utiliser

pendant le temps de réponse de MySQL, la commande dépasse le seuil , nommément temps d'exécution dépasse la valeur de SQL

LONG_QUERY_TRIM, elle sera enregistrée dans le Journal de requête lente.

La valeur par défaut de Long_Query_Time est 10, ce qui signifie fonctionne plus de 10 secondes ou plus. Par défaut, base de données MySQLG Démarrer le journal de requête lente, vous avez besoin de nous

manuellement pour régler

ce paramètre
s'il n'est pas ajusté, ce paramètre n'est généralement pas recommandé,

car il est lent que le journal de requête apportera un certain effet de performance sur MySQL Server.

Support de journal de requête lente Les fichiers de journal de la rédaction sont également prenant en charge les journaux

sur les tables de base de données.

Utiliser
MySQL & GT; Afficher les variables telles que '% Slow_Query_log%';

Pour interroger si le journal de requête lente est allumé, l'effet est indiqué comme indiqué ci-dessous:


Low_Query_log est

éteindre

, indiquant que le journal des requêtes lentes n'est pas allumé.

Ouvrir un journal de requête lent , peut utiliser la commande MySQL suivante:



.


mysql> set global slow_query_log=1


slow_query_log =1 slow_query_log_file=/tmp/mysql_slow.log


] ] cependant uniquement valable sur la base de données actuelle

, si le redémarrage de MySQL échouera, si vous souhaitez prendre effet, vous voulez prendre effet, vous voulezDoit

Modifier MySQL Mon fichier de configuration. CNF, la configuration suivante:

Après avoir ouvert le journal des requêtes lentes, toutes les requêtes lentes SQL seront enregistrées SLOW_QUERY_LOG_FILE

Fichier de configuration. Le paramètre est reçu le paramètre. /mp/mysql_slow.log Fichier, à l'heure actuelle, nous pouvons ouvrir le journal pour vérifier que tout SQL lent pour optimiser chacun.

3, l'ensemble de l'opération SQL lente


Analysez le problème



.








] Lorsque l'ensemble du SQL est en cours d'exécution, cela signifie que la possibilité de supporter la base de données actuelle a atteint le sommet. Nous devons donc utiliser une base de données. Expansion
Signification pour minimiser le serveur MySQL.


Lecture séparée: Général, la base de données "lit plusieurs mots" , en d'autres termes, la pression de la base de données est due au fonctionnement d'un grand nombre de données de lecture, nous pouvons utiliser d Diagramme de la base de données en utilisant des bibliothèques telles que la bibliothèque principale , responsable des données d'écriture; Les autres bibliothèques sont de la bibliothèque , responsables des données de lecture. Cela peut réduire la pression d'accès sur la base de données. Les diagrammes de séparation et de séparation commune de MySQL ont les suivants: Solution de classe d'application La lecture / écriture peut être réalisée par d'appliquer une couche UP . Exemple: Utilisation de SpringMVC + MyBatis, vous pouvez remettre SQL au ressort, via un AOP ou des légendes avec le code affiché en affichant le code. Avantages: Stratégie de routage puissante et peut contrôler davantage. Inconvénients: Besoin de plus de code de contrôle de couplage au printemps. (2) Solution middleware exécutant le propriétaire du cluster via MySQL. Par exemple: Proxy MySQL, Amoeba, Atlas et LogicielsD'autres intermédiaires peuvent répondre à la demande. Avantages: séparément avec la couche d'application. Inconvénients: Ajouter des risques de maintenance de service, la performance et la stabilité seront vérifiés, demandant la prise en charge du code pour forcer les rôles et les transactions. Mardi, des connaissances étendues: Analyse de l'instruction SQL Nous pouvons utiliser la commande Explication dans la déclaration MySQL SQL est analysée, par exemple: ] Comme indiqué ci-dessous: . ID: Sélectionnez l'identifiant, plus l'identifiant est élevé, plus le niveau de priorité est élevé, plus il est fait; SELECT_TYPE: Type de requête; Tableau: La table de sortie; Partition: Partitions appropriées; Type: indiquant le type de connexion; Can_Keys: Lorsque la requête peut être utilisée, l'index peut être utilisé; indique l'indice d'utilisation réel; Key_Len: Longueur du champ d'index; REF: Comparaison de colonnes et d'index; Rangée: Le nombre de rangées de fibres; filtré: Pourcentage de marchandises filtrées dans des conditions de table; Ajouter: Description et description de la mise en œuvre. La chose la plus importante est le type de type, type de type de valeur comme suit: Tous: Numérisation de données de table complète; Index: L'indice passe à travers; Portée: Rechercher la portée de l'index; Index_subquery: Utilisé pour participer à des requêtes pour enfants; unique_subquery: Oui] EQ_Ref dans la requête d'enfant; REF_OR_NULL: L'optimisation REF à indexer NULL; Fulltext: Utilisation de l'index de texte intégral; Utilisez un index unique pour trouver des données; EQ_RF: Utilisation des principales associations d'index ou d'index uniques dans la requête participante; CRE: Placez un nœud principal pour les conditions de requête, la maintenanceNH Optimisé MySQL Conversion de cette optimisation de la requête en voie de conversion constante et à la conversion, cela dépend de l'optimiseur, d'une éq_ref efficace plus efficace. Résumé Cet article introduit les principes et l'annuaire MySQL Performance Optimisation et MySQL Performance est divisé en: optimisation optimale positive et passive, mais quelle que soit votre optimisation. assure l'exactitude, la sécurité et la stabilité du service. Il nous est amené à utiliser: prévenir + solution d'optimisation passive pour assurer la stabilité de MySQL Server et L'optimisation passive est la suivante: ] Le fonctionnement d'une seule SQL est lent Certaines activités SQL sont lentes Tout SQL fonctionne lentement Par conséquent, nous fournissons des problèmes d'analyse et des solutions en France pour chaque programme d'optimisation passif. J'espère que cet article peut vous aider ..

Catégories