Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 15232|Odgovoriti: 3

[Vir] MySQL CPU 100 % visoka rešitev

[Kopiraj povezavo]
Objavljeno na 11. 10. 2018 11:20:31 | | | |
Odprete upravitelja opravil strežnika in ugotovite, da je CPU proces vedno dosegel 99 %, pogled pa zaseda proces mysql, ki je bil visok.


Izhod ukaza processlist pokaže, katere niti tečejo, in lahko preverite trenutno stanje delovanja baze podatkov.

1. Pojdite v mapo mysql/bin in vnesite seznam procesov mysqladmin;
2. Zaženi mysql in vnesi prikaži processlist.
Če imaš SUPER dovoljenje, lahko vidiš vse niti, sicer pa vidiš le niti svojega računa.





Pomen in namen vsakega stolpca

id: Identifikator
uporabnik: prikazuje trenutnega uporabnika, če ni root, bo ta ukaz prikazal le SQL stavke znotraj vaših dovoljenj.
host: prikazuje, iz katerega IP naslova ta izjava prihaja iz katerega porta
db: Prikazuje podatkovno bazo, na katero je proces trenutno povezan.
ukaz: Prikazuje ukaze, ki jih izvede trenutna povezava, običajno spanje, poizvedba in povezava.
čas: Čas, ki traja to stanje, v sekundah.
stanje: Prikazuje stanje SQL stavka, ki uporablja trenutno povezavo, vendar je bilo poizvedbeno le določeno stanje pri izvajanju stavka, SQL stavek, na primer, morda mora iti skozi kopiranje v tmp tabelo, razvrščanje rezultatov, pošiljanje podatkov itd
info: Prikazuje ta SQL stavek, ker je dolžina omejena, zato dolgi SQL ukaz ni v celoti prikazan, vendar je pomembna osnova za presojo naloge.


Ugotovljeno je, da obstajata dva SQL ukaza poizvedb, ki trajata najdlje časa in nista bila izvedena več kot 1000 sekund, SQL stavki, ki smo jih kopirali iz informacijskega polja, pa so skupna poizvedba, in sicer:

izberi cast(*) kot PODPISANO) kot col_0_0_ iz 'RatedPassenger' ratedpasse0_, 'BaseInfoCompany' baseinfoco1_, 'OrderMatch' ordermatch2_ kjer baseinfoco1_. CompanyId=ratedpasse0_. Ime podjetja in ordermatch2_. OrderId=ratedpasse0_. OrderId

Ustavimo postopek teh dveh poizvedbenih izjav

Po desetih sekundah čakanja sem ugotovil, da je procesor močno padel, a je bil še vedno zelo visok, zato bom še naprej spraševal o razlogu!



Za skupni ukaz poizvedbe join dodajte indeks v pripadajoče polje ali spremenite kodo poizvedbe programa.
Ustvarite SQL stavek v indeksu

Konec





Prejšnji:Prijava v C# v Wordpress
Naslednji:Spremenite metodo preslikave vrat za docker kontejnerje
 Najemodajalec| Objavljeno na 11. 10. 2018 13:03:02 |
Najpomembnejši del tega ukaza je stolpec stanje, stanja, navedena v mysql, pa so večinoma naslednja:

Preverjanje mize  
  Preverjanje podatkovnega lista (to je samodejno).  
  Zaključne mize  
  Podatki, spremenjeni v tabeli, se shranjujejo na disk, tabela, ki je bila porabljena, pa se zapira. To je hitra operacija, če ne, preverite, ali je prostor na disku poln ali je disk pod obremenitvijo.  
  Connect Out  
  Replikacijski podrejeni strežnik se povezuje s primarnim strežnikom.  
  Kopiranje v tmp tabelo na disku  
  Ker je začasna množica rezultatov večja od tmp_table_size, se začasna tabela pretvarja iz pomnilnika v diskovno shrambo, da se prihrani pomnilnik.  
  Ustvarjanje tmp tabele  
  Ustvarja se začasna tabela za shranjevanje nekaterih rezultatov poizvedb.  
  brisanje iz glavne tabele  
  Strežnik izvaja prvi del večtabelnega brisanja in je pravkar izbrisal prvo tabelo.  
  brisanje iz referenčnih tabel  
  Strežnik izvaja drugi del brisanja več tabel, to je brisanje zapisov iz drugih tabel.  
  Flushing tabele  
  Izvajam FLUSH TABELE, čakam, da druge niti zaprejo podatkovno tabelo.  
  Ubit  
  Če je zahtevek za ubijanje poslan v nit, bo nit preverila zastavo za ubit in opustila naslednjo zahtevo za uničenje. MySQL preverja zastavice za prekinitev v vsaki glavni zanki, čeprav lahko v nekaterih primerih nit za kratek čas preneha delovati. Če je nit zaklenjena z drugo nitjo, zahteva za prekinitev začne veljati takoj, ko se zaklep sprosti.  
  Zaklenjeno  
  Zaklenjeno z drugimi poizvedbami.  
  Pošiljanje podatkov  
  Zapis SELECT poizvedbe se obdeluje, medtem ko se rezultati pošiljajo odjemalcu.  
  Razporejanje za skupino  
  Razvrščanje za SKUPINO PO.  
  Razporejanje po vrstnem redu  
  Razvrščanje poteka za ORDER BY.  
  Otvoritvene lestvice  
  Ta postopek bi moral biti hiter, razen če ga ne motijo drugi dejavniki. Na primer, podatkovne tabele ne more odpreti druga nit, dokler ni izveden ukaz ALTER TABLE ali LOCK TABLE. Poskušam odpreti mizo.  
  Odstranjevanje podvojenih datotek  
  Izvaja se SELECT Distinct poizvedba, vendar MySQL ne more optimizirati podvojenih zapisov v prejšnji fazi. Zato mora MySQL ponovno odstraniti podvojene zapise, preden rezultate pošlje odjemalcu.  
  Miza za ponovno odprtje  
  Zaklep na tabeli je dosežen, vendar ga je treba spremeniti po spremembi strukture tabele. Že sem sprostil ključavnico, zaprl podatkovni list in poskuša ponovno odpreti podatkovno tabelo.  
  Popravilo z razvrščanjem  
  Ukaz za popravek je razvrščanje za ustvarjanje indeksa.  
  Popravilo s keycache  
  Direktiva za popravilo je uporaba indeksnega predpomnilnika za ustvarjanje novih indeksov enega za drugim. To bo počasneje kot popravilo, če ga razvrstiš.  
  Iskanje po vrsticah za posodobitev  
  Upravičeni zapisi se identificirajo za posodobitve. To je treba storiti, preden POSODOBITEV spremeni ustrezni zapis.  
  Spanje  
  Čakanje, da stranka pošlje novo zahtevo.  
  Sistemska blokada  
  Čakam na pridobitev zunanjega sistemskega zaklepa. Če hkrati ne delujejo mysqld strežniki, ki bi zahtevali isto tabelo, je mogoče zunanje sistemske zaklepe prepovedati z dodajanjem parametra –skip-external-lock.  
  Nadgradnja zapornice  
  INSERT DELAYED poskuša dobiti zaklepno mizo za vstavljanje nove plošče.  
  Posodobitev  
  Iskanje ujemajočih se zapisov in njihovo spreminjanje.  
  Uporabniško zaklepanje  
  čaka na GET_LOCK().  
  Natakarjenje miz  
  Tema je bila obveščena, da je bila struktura podatkovnega lista spremenjena in da jo je treba ponovno odpreti, da bi dobili novo strukturo. Nato morate za ponovno odprtje podatkovne tabele počakati, da vse druge niti zaprejo tabelo. To obvestilo se pojavi v naslednjih primerih: POČISTI TABELE tbl_name, SPREMENI TABELO, PREIMENUJ TABELO, POPRAVI TABELO, ANALIZIRAJ TABELO ali OPTIMIZIRAJ TABELO.  
  Čakam na vstavitev vodnika  
  INSERT DELAYED je obdelal vse čakajoče vstavke in čaka na novo zahtevo.  
  Večina stanj ustreza hitrim operacijam, dokler nit ostane v istem stanju nekaj sekund, se lahko pojavi težava, ki jo je treba preveriti.
 Najemodajalec| Objavljeno na 1. 03. 2019 10:26:49 |
 Najemodajalec| Objavljeno na 1. 03. 2019 10:34:13 |


Poizvedba na podatek traja 10 sekund.
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com