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
|