See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 15232|Vastuse: 3

[Allikas] MySQL CPU 100% kõrge lahendus

[Kopeeri link]
Postitatud 11.10.2018 11:20:31 | | | |
Ava serveri tegumihaldur ja leia, et CPU protsess on alati olnud 99% ning vaade on hõivatud mySQL protsessiga, mis on olnud kõrge.


Protsessiloendi käsu väljund näitab, millised lõimed töötavad, ja saad kontrollida andmebaasi praegust töötamise olekut.

1. Mine mysql/bin kataloogi ja sisesta mysqladmin protsessilist;
2. Käivita MySQL ja sisesta näita protsessilisti.
Kui sul on SUPER õigus, näed kõiki teemasid, muidu näed ainult oma konto teemasid.





Iga veeru tähendus ja eesmärk

id: Identifikaator
kasutaja: kuvab praeguse kasutaja, kui see pole root, kuvab see käsk ainult SQL-lauseid sinu õiguste piires.
host: näitab, millisest IP-st see väide pärineb millisest pordist
db: Kuvab andmebaasi, millega protsess hetkel on ühendatud.
käsk: Kuvab praeguse ühenduse poolt täidetud käsud, tavaliselt unerežiimid, päringud ja ühendus.
Aeg: Aeg, mis see seisund kestab, sekundites.
Olek: Kuvab SQL-lause oleku, mis kasutab praegust ühendust, kuid ainult teatud olek lause täitmisel, SQL-lause, on päritud, näiteks võib vaja minna tmp tabeli kopeerimistabeli, sorteerimise tulemuse, andmete saatmise jms kaudu
info: Kuvab seda SQL-lauset, kuna pikkus on piiratud, seega pikk SQL lause ei kuvata täielikult, kuid see on oluline alus probleemi lause hindamiseks.


Selgub, et on kaks SQL-päringu lauset, mis võtavad kõige kauem aega ja mida ei ole täidetud rohkem kui 1000 sekundit, ning SQL-laused, mille me infoväljast kopeerisime, on ühine päring, järgmiselt:

vali cast(count(*) kui ALLKIRJASTATUD) kui col_0_0_ 'RatedPassenger' ratedpasse0_, 'BaseInfoCompany' baseinfoco1_, 'OrderMatch' ordermatch2_ kus baseinfoco1_. CompanyId=ratedpasse0_. CompanyId ja ordermatch2_. OrderId=ratedpasse0_. OrderId

Me tapame nende kahe päringulause protsessi

Pärast 10-sekundilist ootamist avastasin, et protsessor oli palju langenud, kuid see oli endiselt väga kõrge ja jätkan põhjuse uurimist!



Join joint päringu lause jaoks lisa indeks vastavale väljale või muuda programmi päringukoodi.
Loo indeksi SQL lause

Lõpp





Eelmine:C# logi sisse WordPressi
Järgmine:Muuda portide kaardistamise meetodit docker-konteinerite jaoks
 Üürileandja| Postitatud 11.10.2018 13:03:02 |
Selle käsu kõige kriitilisem on olekuveerg ning mysql-is loetletud olekud on peamiselt järgmised:

Kontrollilaud  
  Andmelehe kontrollimine (see on automaatne).  
  Tabelite sulgemine  
  Tabelis muudetud andmed loputatakse kettale ning kasutatud tabel suletakse. See on kiire operatsioon, kui mitte, peaksid kontrollima, kas ketta ruum on täis või kas ketas on koormuse all.  
  Connect Out  
  Replikatsiooni orjaserver ühendub esmase serveriga.  
  Kopeerimine tmp tabelisse kettal  
  Kuna ajutine tulemuste hulk on suurem kui tmp_table_size, konverteeritakse ajutine tabel mälust kettasalvestuseks, et mälu säästa.  
  TMP tabeli loomine  
  Luuakse ajutine tabel, kuhu salvestatakse osa päringute tulemustest.  
  Kustutamine põhitabelist  
  Server teeb mitme tabeli kustutamise esimest osa ja on just esimese tabeli kustutanud.  
  Kustutamine viitetabelitest  
  Server teostab mitme tabeli kustutamise teist osa, mis tähendab kirjete kustutamist teistest tabelitest.  
  Loputustabelid  
  Teen FLUSH TABELEID, ootan, kuni teised lõimed andmetabeli sulgevad.  
  Tapetud  
  Kui tapmistaotlus saadetakse lõime, kontrollib lõim tapmislippu ja loobub järgmisest tapmissoovist. MySQL kontrollib igas põhitsüklis tapmislippe, kuigi mõnel juhul võib lõim lühikeseks ajaks surra. Kui lõim on lukustatud teise lõimega, jõustub tapmistaotlus kohe, kui lukustus vabastatakse.  
  Lukustatud  
  Lukus teiste päringute poolt.  
  Andmete saatmine  
  SELECT-päringu kirjet töödeldakse, samal ajal kui tulemused saadetakse kliendile.  
  Grupi sorteerimine  
  Sorteerimine GRUPI JÄRGI.  
  Sorteerimine tellimuse järgi  
  Sorteerimine toimub TELLIMUSE JÄRGI.  
  Avamislauad  
  See protsess peaks olema kiire, kui seda ei sega muud tegurid. Näiteks ei saa andmetabelit avada teise lõime poolt enne, kui ALTER TABLE või LOCK TABLE lause on käivitatud. Püüan lauda avada.  
  Duplikaatide eemaldamine  
  SELECT DISTINCT päringut täidetakse, kuid MySQL ei suuda optimeerida duplikaatkirjeid eelmises etapis. Seetõttu peab MySQL duplikaatkirjed uuesti eemaldama enne tulemuste saatmist kliendile.  
  Taasava laud  
  Laual on lukk, kuid seda tuleb muuta pärast tabeli struktuuri muutmist. Olen juba luku lahti lasknud, andmelehe sulgenud ja üritab andmetabelit uuesti avada.  
  Parandamine sorteerimise teel  
  Parandamiskäsk on sorteerimine, et luua indeks.  
  Parandamine keycache'iga  
  Parandusdirektiiv on kasutada indeksi vahemälu uute indeksite loomiseks ükshaaval. See on aeglasem kui sorteerimise parandamine.  
  Otsin ridadest uuendusi  
  Sobivad dokumendid tuvastatakse uuendusteks. See tuleb teha enne, kui UUENDUS muudab vastavat kirjet.  
  Magamine  
  Ootan, et klient saadaks uue päringu.  
  Süsteemi lukk  
  Ootan, et saada väline süsteemilukk. Kui samal ajal ei tööta ühtegi mysqld serverit, mis taotleks sama tabelit, võib välised süsteemilukud keelata, lisades –skip-external-locking parameetri.  
  Luku uuendamine  
  INSERT DELAYED üritab saada lukustustabelit, et sisestada uus kirje.  
  Uuendamine  
  Sobivate dokumentide otsimine ja nende muutmine.  
  Kasutajalukk  
  ootab GET_LOCK().  
  Laudade ootamine  
  Teemale teatati, et andmelehe struktuuri on muudetud ja see tuleb uuesti avada, et saada uus struktuur. Seejärel, et andmetabelit uuesti avada, pead ootama, kuni kõik teised lõimed tabeli sulgevad. See teavitus ilmneb järgmistel juhtudel: FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE või OPTIMIZE TABLE.  
  Ootan käsitleja sisestust  
  INSERT DELAYED on töödelnud kõik ootel insertid ja ootab uut taotlust.  
  Enamik olekuid vastab kiiretele operatsioonidele, kui lõim jääb mõneks sekundiks samasse olekusse, võib tekkida probleem, mida tuleb kontrollida.
 Üürileandja| Postitatud 01.03.2019 10:26:49 |
 Üürileandja| Postitatud 01.03.2019 10:34:13 |


Andmete päringuks kulub 10 sekundit.
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com