Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 15232|Répondre: 3

[Source] Solution CPU MySQL à 100 % haute

[Copié le lien]
Publié sur 11/10/2018 11:20:31 | | | |
J’ouvre le gestionnaire des tâches serveur et je constate que le processus CPU a toujours été à 99 %, et que la vue est occupée par le processus mysql, qui était élevé.


La sortie de la commande processlist indique quels threads sont en cours, et vous pouvez vérifier l’état actuel de la base de données.

1. Aller dans le répertoire mysql/bin et entrer mysqladmin processlist ;
2. Lance mysql et saisi la liste de procédés affichée.
Si vous avez la permission SUPER, vous pouvez voir tous les fils, sinon, vous ne pouvez voir que les fils de votre compte.





La signification et l’objectif de chaque colonne

id : Un identifiant
user : affiche l’utilisateur actuel, s’il n’est pas root, cette commande n’affichera que des instructions SQL dans vos permissions.
host : indique de quelle IP provient cette instruction de quel port
db : Affiche la base de données à laquelle le processus est actuellement connecté.
commande : Affiche les commandes exécutées par la connexion actuelle, généralement veille, requête et connexion.
temps : Le temps que cet état dure, en secondes.
état : Affiche l’état de l’instruction SQL qui utilise la connexion actuelle, mais seul un certain état lors de l’exécution de l’instruction, une instruction sql, a été interrogé, par exemple, il peut être nécessaire de passer par la copie vers la table tmp, le tri des résultats, l’envoi de données, etc
info : Affiche cette instruction SQL, car la longueur est limitée, donc la longue instruction SQL n’est pas entièrement affichée, mais elle constitue une base importante pour juger l’instruction problème.


On constate qu’il y a deux requêtes SQL qui prennent le plus de temps et n’ont pas été exécutées depuis plus de 1000 secondes, et les instructions SQL copiées depuis le champ info sont une requête conjointe, comme suit :

sélectionnez cast(count(*) comme SIGNED) comme col_0_0_ à partir de la ratedpasse0_ 'RatedPassenger', 'BaseInfoCompany' baseinfoco1_, 'OrderMatch' ordermatch2_ où baseinfoco1_. CompanyId=ratedpasse0_. Identification de la société et ordermatch2_. OrderId=ratedpasse0_. OrderID

Nous tuons le processus de ces deux requêtes

Après avoir attendu 10 secondes, j’ai constaté que le processeur avait beaucoup chuté, mais c’était toujours très élevé, et je vais continuer à interroger sur la raison !



Pour l’instruction de requête conjointe jointe, ajoutez un index au champ associé ou modifiez le code de requête du programme.
Créer une instruction SQL d’index

Fin





Précédent:Connexion C# à Wordpress
Prochain:Modifier la méthode de mappage des ports pour les conteneurs docker
 Propriétaire| Publié sur 11/10/2018 13:03:02 |
La colonne la plus critique de cette commande est celle des états, et les états listés dans mysql sont principalement les suivants :

Tableau de chèques  
  Je vérifie la fiche technique (c’est automatique).  
  Tables de clôture  
  Les données modifiées dans la table sont vidées sur le disque, et la table qui a été utilisée est en train d’être fermée. C’est une opération rapide, sinon, vous devriez vérifier si l’espace disque est complet ou si le disque est sous charge.  
  Connexion  
  Le serveur esclave de réplication se connecte au serveur principal.  
  Copie vers la table tmp sur disque  
  Comme l’ensemble de résultats temporaire est supérieur à tmp_table_size, la table temporaire est convertie de la mémoire en mémoire vers le stockage sur disque pour économiser de la mémoire.  
  Création de la table tmp  
  Une table temporaire est en cours de création pour contenir certains résultats de requête.  
  suppression du tableau principal  
  Le serveur effectue la première partie d’une suppression multi-table et vient de supprimer la première table.  
  suppression des tableaux de référence  
  Le serveur effectue la deuxième phase de suppression multi-tables, c’est-à-dire supprimer les enregistrements des autres tables.  
  Tables de chasse  
  Je fais les TABLES FLUSH, j’attends que d’autres threads ferment la datatable.  
  Tué  
  Si une demande de kill est envoyée à un thread, le thread vérifiera le drapeau de kill et abandonnera la demande suivante de kill. MySQL vérifie la présence de flags d’arrêt dans chaque boucle principale, bien que dans certains cas le thread puisse s’éteindre pendant une courte période. Si le thread est verrouillé par un autre thread, la demande d’élimination prendra effet immédiatement lorsque le verrouillage est libéré.  
  Verrouillé  
  Bloqué par d’autres questions.  
  Envoi de données  
  L’enregistrement de la requête SELECT est traité pendant que les résultats sont envoyés au client.  
  Tri par groupe  
  Trier pour GROUPE PAR.  
  Tri par ordre  
  Le tri est en cours pour ORDER BY.  
  Tables d’ouverture  
  Ce processus devrait être rapide sauf si d’autres facteurs sont perturbés. Par exemple, une table de données ne peut pas être ouverte par un autre thread tant que l’instruction ALTER TABLE ou LOCK TABLE n’est pas exécutée. Essayer d’ouvrir une table.  
  Suppression des doublons  
  Une requête SELECT distinct est en cours d’exécution, mais MySQL ne parvient pas à optimiser les enregistrements dupliqués de l’étape précédente. Par conséquent, MySQL doit supprimer à nouveau les enregistrements dupliqués avant d’envoyer les résultats au client.  
  Tableau de réouverture  
  Un verrou sur une table est obtenu, mais il doit être modifié après modification de la structure de table. J’ai déjà relâché la serrure, fermé la fiche technique, et il essaie de rouvrir la table.  
  Réparation par tri  
  L’instruction de fixation consiste à trier pour créer un index.  
  Réparation avec keycache  
  La directive fix utilise le cache d’index pour créer de nouveaux index un par un. Ce sera plus lent que Réparation par tri.  
  Recherche de lignes pour la mise à jour  
  Les dossiers éligibles sont en cours d’identification pour des mises à jour. Cela doit être fait avant que la mise à jour ne modifie l’enregistrement concerné.  
  Dormir  
  Attendre que le client envoie une nouvelle demande.  
  Verrouillage système  
  En attente d’obtenir un verrouillage système externe. S’il n’y a pas de serveurs mysqld en fonctionnement simultanément demandant la même table, les verrouillages système externes peuvent être interdits en ajoutant le paramètre –skip-external-lock.  
  Amélioration de l’écluse  
  INSERT DELAYED essaie d’obtenir une table de verrouillage pour insérer un nouvel enregistrement.  
  Mise à jour  
  Chercher des dossiers correspondants et les modifier.  
  Verrouillage utilisateur  
  attend GET_LOCK().  
  Servir les tables  
  Le thread a été informé que la structure de la fiche technique avait été modifiée et devait être rouverte pour obtenir la nouvelle structure. Ensuite, pour rouvrir la table de données, il faut attendre que tous les autres threads ferment la table. Cette notification se produit dans les cas suivants : FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE ou OPTIMIZE TABLE.  
  En attente de l’insertion du manipulateur  
  INSERT DELAYED a traité toutes les insertions en attente et attend une nouvelle demande.  
  La plupart des états correspondent à des opérations rapides, tant qu’un thread reste dans le même état quelques secondes, il peut y avoir un problème à vérifier.
 Propriétaire| Publié sur 01/03/2019 10:26:49 |
 Propriétaire| Publié sur 01/03/2019 10:34:13 |


Il faut 10 secondes pour interroger une donnée.
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com