Deschid managerul de sarcini al serverului și descoperă că procesul CPU a fost mereu la 99%, iar vizualizarea este ocupată de procesul mysql, care a fost ridicat.
Ieșirea comenzii proceslist arată ce fire rulează și poți verifica starea curentă a bazei de date.
1. Mergi la directorul mysql/bin și introduci lista de procese mysqladmin; 2. Pornește mysql și introdu afișarea listei proceselor. Dacă ai permisiunea SUPER, poți vedea toate firele de discuție, altfel poți vedea doar firele de discuție ale contului tău.
Semnificația și scopul fiecărei coloane
id: Un identificator user: afișează utilizatorul curent, dacă nu este root, această comandă va afișa doar instrucțiuni SQL în cadrul permisiunilor tale. host: arată ce IP provine această instrucțiune de la ce port db: Afișează baza de date la care procesul este conectat în prezent. comandă: Afișează comenzile executate de conexiunea curentă, de obicei sleep, interogare și conectare. timp: Timpul în care această stare durează, în secunde. Starea: Afișează starea instrucțiunii sql care folosește conexiunea curentă, dar doar o anumită stare în execuția instrucțiunii, o instrucțiune sql, a fost interogată, de exemplu, poate fi nevoie să treacă prin copierea în tabelul tmp, sortarea rezultatului, trimiterea datelor etc info: Afișează această afirmație SQL, deoarece lungimea este limitată, astfel încât instrucțiunea SQL lungă nu este afișată complet, dar reprezintă o bază importantă pentru evaluarea enunțului problemei.
S-a constatat că există două instrucțiuni de interogare SQL care durează cel mai mult timp și nu au fost executate mai mult de 1000 de secunde, iar instrucțiunile SQL copiate din câmpul info sunt o interogare comună, după cum urmează:
selectează cast(count(*) ca SEMNAT) ca col_0_0_ din ratedpasse0_ 'RatedPassenger', 'BaseInfoCompany' baseinfoco1_, 'OrderMatch' ordermatch2_ unde baseinfoco1_. CompanyId=ratedpasse0_. ID-ul companiei și ordermatch2_. OrderId=ratedpasse0_. OrderId Eliminăm procesul acestor două instrucțiuni de interogare
După ce am așteptat 10 secunde, am observat că CPU-ul a scăzut mult, dar era încă foarte ridicat, și voi continua să pun întrebări despre motiv!
Pentru instrucțiunea de interogare joint join, adăugați un index în câmpul asociat sau modificați codul de interogare al programului. Creează o instrucțiune SQL de index
Sfârșit
|