Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 15232|Svare: 3

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

[Kopier lenke]
Publisert på 11.10.2018 11:20:31 | | | |
Åpne serverens oppgavebehandling og se at CPU-prosessen alltid har vært 99 %, og visningen er opptatt av MySQL-prosessen, som har vært høy.


Utgangen fra prosessliste-kommandoen viser hvilke tråder som kjører, og du kan sjekke den nåværende driftsstatusen til databasen.

1. Gå til mysql/bin-katalogen og skriv inn mysqladmin prosessliste;
2. Start MySQL og skriv inn show processlist.
Hvis du har SUPER-tillatelse, kan du se alle trådene, ellers kan du bare se trådene på kontoen din.





Betydningen og formålet med hver kolonne

id: En identifikator
user: viser den nåværende brukeren, hvis den ikke er root, vil denne kommandoen kun vise SQL-setninger innenfor dine tillatelser.
host: viser hvilken IP denne setningen kommer fra hvilken port
db: Viser databasen som prosessen for øyeblikket er koblet til.
kommando: Viser kommandoene som utføres av den nåværende tilkoblingen, vanligvis i dvale, spørre og koble til.
tid: Tiden denne tilstanden varer, i sekunder.
tilstand: Viser statusen til SQL-setningen som bruker den nåværende tilkoblingen, men kun en viss tilstand i utførelsen av setningen, en SQL-setning, er spørret, for eksempel kan den måtte gjennom kopiering til tmp-tabell, sorteringsresultat, sending av data osv
info: Viser denne SQL-setningen, fordi lengden er begrenset, så den lange SQL-setningen vises ikke fullt ut, men den er et viktig grunnlag for å vurdere problemsetningen.


Det viser seg at det er to SQL-spørringssetninger som tar lengst tid og ikke har blitt utført i mer enn 1000 sekunder, og SQL-setningene vi kopierte fra infofeltet er en felles spørring, som følger:

velg cast (count(*) som SIGNERT) som col_0_0_ fra 'RatedPassenger' ratedpasse0_, 'BaseInfoCompany' baseinfoco1_, 'OrderMatch' ordermatch2_ hvor baseinfoco1_. CompanyId=ratedpasse0_. Firmaid og ordermatch2_. OrderId=ratedpasse0_. OrderId

Vi avslutter prosessen med disse to spørringssetningene

Etter å ha ventet i 10 sekunder, oppdaget jeg at CPU-en hadde falt mye, men den var fortsatt veldig høy, og jeg vil fortsette å spørre om årsaken!



For join-felles spørringssetningen, legg til en indeks i det tilknyttede feltet eller modifiser programspørringskoden.
Opprett en indeks SQL-setning

Slutt





Foregående:C# logg inn på Wordpress
Neste:Endre metoden for portkartlegging for docker-containere
 Vert| Publisert på 11.10.2018 13:03:02 |
Den mest kritiske av denne kommandoen er tilstandskolonnen, og tilstandene som listes i MySQL er hovedsakelig som følger:

Sjekketabell  
  Sjekker databladet (dette skjer automatisk).  
  Avslutningstabeller  
  Dataene som er endret i tabellen blir fjernet til disken, og tabellen som er brukt opp, blir lukket. Dette er en rask operasjon, hvis ikke, bør du sjekke om diskplassen er full eller om disken er belastet.  
  Koble deg ut  
  Replikasjonsslaveserveren kobler til primærserveren.  
  Kopiering til tmp-tabell på disk  
  Fordi det midlertidige resultatsettet er større enn tmp_table_size, konverteres den midlertidige tabellen fra minnet til disklagring for å spare minne.  
  Opprettelse av tmp-tabell  
  En midlertidig tabell opprettes for å lagre noen av spørringsresultatene.  
  Slettet fra hovedtabellen  
  Serveren utfører den første delen av en sletting med flere tabeller og har nettopp slettet den første tabellen.  
  Slette fra referansetabeller  
  Serveren utfører den andre delen av sletting av flere tabeller, som er å slette poster fra andre tabeller.  
  Flushing-tabeller  
  Gjør FLUSH TABLES, venter på at andre tråder skal lukke datatabellen.  
  Drept  
  Hvis en kill-forespørsel sendes til en tråd, vil tråden sjekke kill-flagget og forlate neste kill-forespørsel. MySQL sjekker for kill-flagg i hver hovedsløyfe, selv om tråden i noen tilfeller kan dø i en kort periode. Hvis tråden låses av en annen tråd, vil kill-forespørselen tre i kraft umiddelbart når låsen frigjøres.  
  Låst  
  Låst av andre forespørsler.  
  Sending av data  
  Posten til SELECT-spørringen behandles mens resultatene sendes til klienten.  
  Sortering for gruppe  
  Sorterer for GRUPPE ETTER.  
  Sortering etter rekkefølge  
  Sortering gjøres for BESTILLING ETTER.  
  Åpningsbord  
  Denne prosessen bør være rask med mindre andre faktorer forstyrrer. For eksempel kan en datatabell ikke åpnes av en annen tråd før ALTER TABLE- eller LOCK TABLE-setningen er utført. Prøver å åpne et bord.  
  Fjerning av duplikater  
  En SELECT DISTINKT-spørring kjøres, men MySQL klarer ikke å optimalisere duplikatpostene i forrige fase. Derfor må MySQL fjerne de dupliserte postene igjen før resultatene sendes til klienten.  
  Gjenåpningsbordet  
  En lås på en tabell oppnås, men den må endres etter at tabellstrukturen er endret. Har allerede åpnet låsen, lukket databladet, og prøver å åpne datatabellen igjen.  
  Reparasjon ved sortering  
  Fix-instruksjonen er sortering for å lage en indeks.  
  Reparasjon med keycache  
  Fix-direktivet bruker indekscachen til å lage nye indekser én etter én. Det vil være tregere enn Reparasjon ved sortering.  
  Søker i rader etter oppdatering  
  Kvalifiserte poster blir identifisert for oppdateringer. Dette må gjøres før OPPDATERINGEN endrer den relevante posten.  
  Søvn  
  Venter på at kunden skal sende en ny forespørsel.  
  Systemlås  
  Venter på å få en ekstern systemlås. Hvis det ikke er noen mysqld-servere som kjører samtidig og ber om samme tabell, kan eksterne systemlåser forbys ved å legge til parameteren –skip-external-locking.  
  Oppgradering av sluse  
  INSERT DELAYED prøver å få en låsetabell til å sette inn en ny post.  
  Oppdatering  
  Søker etter matchende oppføringer og endrer dem.  
  Brukerlås  
  venter på GET_LOCK().  
  Servering for bord  
  Tråden ble varslet om at databladstrukturen var endret og måtte åpnes på nytt for å få den nye strukturen. Deretter, for å åpne datatabellen igjen, må du vente til alle andre tråder har lukket tabellen. Denne varslingen skjer i følgende tilfeller: SKYLL TABELLER tbl_name, ENDRE TABELL, OMDØP TABELL, REPARER TABELL, ANALYSER TABELL eller OPTIMALISER TABELL.  
  Venter på handler-innsetting  
  INSERT DELAYED har behandlet alle ventende innsettinger og venter på en ny forespørsel.  
  De fleste tilstander tilsvarer raske operasjoner, så lenge en tråd forblir i samme tilstand i noen sekunder, kan det oppstå et problem som må sjekkes.
 Vert| Publisert på 01.03.2019 10:26:49 |
 Vert| Publisert på 01.03.2019 10:34:13 |


Det tar 10 sekunder å spørre et datastykke.
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com