Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 15232|Svar: 3

[Kilde] MySQL CPU 100% høj løsning

[Kopier link]
Opslået på 11/10/2018 11.20.31 | | | |
Åbn serverens jobliste og find, at CPU-processen altid har været 99%, og visningen er optaget af MySQL-processen, som har været høj.


Outputtet fra processlist-kommandoen viser, hvilke tråde der kører, og du kan tjekke databasens aktuelle kørende status.

1. Gå til mysql/bin-mappen og indtast mysqladmin processlist;
2. Start MySQL og indtast 'vis procesliste'.
Hvis du har SUPER-tilladelse, kan du se alle tråde, ellers kan du kun se trådene på din konto.





Betydningen og formålet med hver kolonne

id: En identifikator
bruger: viser den nuværende bruger, hvis det ikke er root, vil denne kommando kun vise SQL-sætninger inden for dine tilladelser.
host: viser hvilken IP denne sætning kommer fra hvilken port
db: Viser databasen, som processen aktuelt er forbundet til.
kommando: Viser de kommandoer, der udføres af den aktuelle forbindelse, normalt dvale, forespørge og forbinde.
tid: Den tid, denne tilstand varer, i sekunder.
Tilstand: Viser status for SQL-sætningen, der bruger den aktuelle forbindelse, men kun en bestemt tilstand i udførelsen af sætningen, en SQL-sætning, er blevet forespurgt, for eksempel kan den skulle igennem kopiering til tmp-tabel, sorteringsresultat, afsendelse af data osv
info: Viser denne SQL-sætning, fordi længden er begrænset, så den lange SQL-sætning vises ikke fuldt ud, men den er et vigtigt grundlag for at vurdere problemstillingen.


Det viser sig, at der er to SQL-forespørgselssætninger, som tager længst tid og ikke er blevet udført i mere end 1000 sekunder, og de SQL-sætninger, vi kopierede fra infofeltet, er en fælles forespørgsel, som følger:

vælg cast (count(*) som SIGNED) som col_0_0_ fra 'RatedPassenger' ratedpasse0_, 'BaseInfoCompany' baseinfoco1_, 'OrderMatch' ordermatch2_ hvor baseinfoco1_. CompanyId=ratedpasse0_. CompanyID og ordermatch2_. OrderId=ratedpasse0_. OrderId

Vi slår processen med disse to forespørgselsudsagn ihjel

Efter at have ventet i 10 sekunder opdagede jeg, at CPU'en var faldet meget, men den var stadig meget høj, og jeg vil fortsætte med at spørge om årsagen!



For join joint query-sætningen tilføjes et indeks til det tilknyttede felt eller redigeres programforespørgselskoden.
Opret en indeks SQL-sætning

Slut





Tidligere:C# log ind på Wordpress
Næste:Ændr metoden for portkortlægning for docker-containere
 Udlejer| Opslået på 11/10/2018 13.03.02 |
Den mest kritiske af denne kommando er tilstandskolonnen, og de tilstande, der er opført i MySQL, er hovedsageligt som følger:

Kontroltabel  
  Tjekker databladet (det sker automatisk).  
  Afslutningstabeller  
  De data, der er ændret i tabellen, bliver fjernet til disken, og den tabel, der er brugt op, bliver lukket. Dette er en hurtig operation, hvis ikke, bør du tjekke, om diskpladsen er fuld, eller om disken er under belastning.  
  Connect Out  
  Replikationsslave-serveren forbinder til den primære server.  
  Kopiering til tmp-tabel på disk  
  Da det midlertidige resultatsæt er større end tmp_table_size, bliver den midlertidige tabel konverteret fra hukommelsen til disklagring for at gemme hukommelsen.  
  Oprettelse af tmp-tabel  
  En midlertidig tabel bliver oprettet for at indeholde nogle af forespørgselsresultaterne.  
  Sletning fra hovedtabellen  
  Serveren udfører den første del af en fler-tabel sletning og har netop slettet den første tabel.  
  Sletning fra referencetabeller  
  Serveren udfører den anden del af multi-table deletion, som er at slette poster fra andre tabeller.  
  Udskylningstabeller  
  At lave FLUSH TABLES og vente på, at andre tråde lukker datatabellen.  
  Dræbt  
  Hvis en kill-anmodning sendes til en tråd, vil tråden tjekke kill-flaget og opgive den næste kill-anmodning. MySQL tjekker for kill-flags i hver hovedløkke, selvom tråden i nogle tilfælde kan dø i en kort periode. Hvis tråden låses af en anden tråd, træder kill-anmodningen i kraft med det samme, når låsen frigives.  
  Låst  
  Låst af andre forespørgsler.  
  Afsender data  
  Registreringen af SELECT-forespørgslen behandles, mens resultaterne sendes til klienten.  
  Sortering efter gruppe  
  Sortering for GRUPPE EFTER.  
  Sortering efter orden  
  Sortering foregår for ORDER BY.  
  Åbningsborde  
  Denne proces bør være hurtig, medmindre andre faktorer forstyrrer den. For eksempel kan en datatabel ikke åbnes af en anden tråd, før ALTER TABLE- eller LOCK TABLE-sætningen er udført. Prøver at åbne et bord.  
  Fjernelse af dubletter  
  En SELECT DIFFERENTIE-forespørgsel bliver udført, men MySQL kan ikke optimere de dubblerede poster i det forrige trin. Derfor skal MySQL igen fjerne de dubletposter, før resultaterne sendes til klienten.  
  Genåbnet bord  
  En lås på en tabel opnås, men den skal ændres efter at tabelstrukturen er ændret. Har allerede frigivet låsen, lukket datasheetet og prøver at åbne datatabellen igen.  
  Reparation ved sortering  
  Fix-instruktionen sorterer for at oprette et indeks.  
  Reparation med keycache  
  Fix-direktivet bruger indekscachen til at oprette nye indekser ét ad gangen. Det vil være langsommere end Reparation ved sortering.  
  Søgning i rækker efter opdatering  
  Berettigede poster bliver identificeret til opdateringer. Det skal gøres, før OPDATERINGEN ændrer den relevante post.  
  Søvn  
  Venter på, at klienten sender en ny anmodning.  
  Systemlås  
  Venter på at opnå en ekstern systemlås. Hvis der ikke kører mysqld-servere samtidig, som anmoder om den samme tabel, kan eksterne systemlåse forbydes ved at tilføje –skip-external-locking-parameteren.  
  Opgradering af sluse  
  INSERT DELAYED prøver at få en låsetabel til at indsætte en ny post.  
  Opdatering  
  Søger efter matchende poster og ændrer dem.  
  Brugerlås  
  venter på GET_LOCK().  
  Servering af borde  
  Tråden blev underrettet om, at databladstrukturen var blevet ændret og skulle genåbnes for at få den nye struktur. Derefter, for at genåbne datatabellen, skal du vente, indtil alle andre tråde lukker tabellen. Denne meddelelse sker i følgende tilfælde: FLUSH TABLES tbl_name, ÆNDR TABEL, OMDØB TABELL, REPARATIONSTABELL, ANALYZE TABLE eller OPTIMER TABLE.  
  venter på handler-indsættelse  
  INSERT DELAYED har behandlet alle ventende indsættelser og venter på en ny anmodning.  
  De fleste tilstande svarer til hurtige operationer, så længe en tråd forbliver i samme tilstand i et par sekunder, kan der opstå et problem, der skal kontrolleres.
 Udlejer| Opslået på 01/03/2019 10.26.49 |
 Udlejer| Opslået på 01/03/2019 10.34.13 |


Det tager 10 sekunder at forespørge et stykke data.
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com