Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 15232|Odpoveď: 3

[Zdroj] MySQL CPU 100% vysoké riešenie

[Kopírovať odkaz]
Zverejnené 11. 10. 2018 11:20:31 | | | |
Otvorte správcu úloh servera a zistite, že CPU proces bol vždy na 99 % a zobrazenie je obsadené procesom mysql, ktorý bol vysoký.


Výstup príkazu processlist ukazuje, ktoré vlákna bežia, a môžete skontrolovať aktuálny stav databázy.

1. Prejdite do adresára mysql/bin a zadajte mysqladmin processlist;
2. Spustiť mysql a zadať zobraziť processlist.
Ak máte povolenie SUPER, môžete vidieť všetky vlákna, inak vidíte len vlákna vášho účtu.





Význam a účel každého stĺpca

id: Identifikátor
user: zobrazuje aktuálneho používateľa, ak nie je root, tento príkaz zobrazí iba SQL príkazy v rámci vašich oprávnení.
host: ukazuje, z ktorej IP adresy toto vyhlásenie pochádza z ktorého portu
db: Zobrazuje databázu, ku ktorej je proces momentálne pripojený.
príkaz: Zobrazuje príkazy vykonané aktuálnym pripojením, zvyčajne Sleep, Query a Connect.
čas: Čas, ktorý tento stav trvá, v sekundách.
stav: Zobrazuje stav SQL príkazu, ktorý používa aktuálne pripojenie, ale iba určitý stav pri vykonávaní príkazu, SQL príkaz, bol dotazovaný, napríklad môže byť potrebné prejsť kopírovaním do tmp tabuľky, triedením výsledku, odosielaním dát a podobne
info: Zobrazuje tento SQL príkaz, pretože jeho dĺžka je obmedzená, takže dlhý SQL príkaz nie je úplne zobrazený, ale je dôležitým základom pre posúdenie problémového príkazu.


Zistilo sa, že existujú dva SQL dotazové príkazy, ktoré trvajú najdlhšie a neboli vykonané viac ako 1000 sekúnd, a SQL príkazy, ktoré sme skopírovali z info poľa, sú spoločný dotaz, a to nasledovne:

vyber cast(count(*) ako SIGNED) ako col_0_0_ z 'RatedPassenger' ratedpasse0_, 'BaseInfoCompany' baseinfoco1_, 'OrderMatch' ordermatch2_ kde baseinfoco1_. CompanyId=ratedpasse0_. Firemné ID a ordermatch2_. OrderId=ratedpasse0_. OrderId

Zrušíme proces týchto dvoch dotazových výrokov

Po 10 sekundách som zistil, že CPU výrazne kleslo, ale stále bolo veľmi vysoké, a budem sa ďalej pýtať na príčinu!



Pre join joint query príkaz pridajte index do príslušného poľa alebo upravte kód programu dotazu.
Vytvorte SQL príkaz indexu

Koniec





Predchádzajúci:C# prihlásenie do Wordpressu
Budúci:Úprava metódy mapovania portov pre docker kontajnery
 Prenajímateľ| Zverejnené 11. 10. 2018 13:03:02 |
Najkritickejšou časťou tohto príkazu je stĺpec stavov a stavy uvedené v mysql sú hlavne nasledovné:

Kontrolný stôl  
  Kontrola datasheetu (to je automatické).  
  Záverečné stoly  
  Údaje upravené v tabuľke sa presúvajú na disk a tabuľka, ktorá bola vyčerpaná, sa zatvára. Je to rýchla operácia, ak nie, mali by ste skontrolovať, či je miesto na disku plné alebo či je disk zaťažený.  
  Connect Out  
  Replikačný slave server sa pripája k primárnemu serveru.  
  Kopírovanie do tmp tabuľky na disku  
  Keďže dočasná množina výsledkov je väčšia ako tmp_table_size, dočasná tabuľka sa konvertuje z pamäte na diskové úložisko, aby sa ušetrila pamäť.  
  Vytváranie tmp tabuľky  
  Vytvára sa dočasná tabuľka na uchovávanie niektorých výsledkov dotazov.  
  Vymazanie z hlavnej tabuľky  
  Server vykonáva prvú časť viactabuľkového vymazania a práve vymazal prvú tabuľku.  
  Vymazanie z referenčných tabuliek  
  Server vykonáva druhú časť viactabuľkového mazania, ktorou je mazanie záznamov z iných tabuliek.  
  Splachovacie tabuľky  
  Robím FLUSH TABLES, čakám, kým ostatné vlákna zatvoria datatable.  
  Zabitý  
  Ak je žiadosť o zabitie odoslaná do vlákna, vlákno skontroluje vlajku zabitia a opustí ďalšiu žiadosť o zabitie. MySQL kontroluje príznaky ukončenia v každej hlavnej slučke, hoci v niektorých prípadoch môže vlákno na krátky čas zlyhať. Ak je vlákno uzamknuté iným vláknom, žiadosť o ukončenie nadobudne účinnosť okamžite po uvoľnení zámku.  
  Zamknuté  
  Uzamknuté inými dotazmi.  
  Odosielanie dát  
  Záznam SELECT dotazu sa spracováva, zatiaľ čo výsledky sa odosielajú klientovi.  
  Triedenie pre skupinu  
  Triedenie pre SKUPINU PO.  
  Triedenie podľa poradia  
  Triedenie prebieha pre ORDER BY.  
  Otváracie tabuľky  
  Tento proces by mal byť rýchly, pokiaľ do toho nezasahujú iné faktory. Napríklad dátová tabuľka nemôže byť otvorená iným vláknom, kým nie je vykonaný príkaz ALTER TABLE alebo LOCK TABLE. Snažím sa otvoriť stôl.  
  Odstraňovanie duplikátov  
  Vykonáva sa SELECT Distinct dotaz, ale MySQL nedokáže optimalizovať duplicitné záznamy v predchádzajúcej fáze. Preto musí MySQL opäť odstrániť duplicitné záznamy pred odoslaním výsledkov klientovi.  
  Stôl znovuotvorenia  
  Na stole sa získa zámok, ale musí byť upravený po úprave štruktúry tabuľky. Už som uvoľnil zámok, zatvoril datasheet a snažím sa datatable znovu otvoriť.  
  Oprava triedením  
  Inštrukcia fix je triedenie na vytvorenie indexu.  
  Oprava pomocou keycache  
  Fixná smernica spočíva v používaní indexovej cache na vytváranie nových indexov jeden po druhom. Bude to pomalšie ako oprava triedením.  
  Vyhľadávanie v riadkoch na aktualizáciu  
  Oprávnené záznamy sa identifikujú na aktualizácie. Musí to byť vykonané predtým, než AKTUALIZÁCIA upraví príslušný záznam.  
  Spánok  
  Čakanie, kým klient pošle novú požiadavku.  
  Systémový zámok  
  Čakáme na získanie externého systémového zámku. Ak v rovnakom čase nebežia žiadne mysqld servery, ktoré požadujú tú istú tabuľku, externé systémové zámky môžu byť zakázané pridaním parametra –skip-external-lock.  
  Modernizácia zámku  
  INSERT DELAYED sa snaží prinútiť uzamykateľnú tabuľku, aby vložila nový záznam.  
  Aktualizácia  
  Vyhľadávanie zhodných záznamov a ich úprava.  
  Užívateľský zámok  
  čaká na GET_LOCK().  
  Obsluha stolov  
  Vlákno bolo oznámené, že štruktúra datasheetu bola upravená a je potrebné ju znovu otvoriť, aby získala novú štruktúru. Potom, aby ste mohli dátovú tabuľku znovu otvoriť, musíte počkať, kým všetky ostatné vlákna tabuľku zatvoria. Toto upozornenie sa vyskytuje v nasledujúcich prípadoch: VYČISTIŤ TABUĽKY tbl_name, ZMENIŤ TABUĽKU, PREJMENOVAŤ TABUĽKU, OPRAVIŤ TABUĽKU, ANALYZOVAŤ TABUĽKU alebo OPTIMALIZOVAŤ TABUĽKU.  
  Čakanie na vloženie handlera  
  INSERT DELAYED spracoval všetky čakajúce vklady a čaká na novú požiadavku.  
  Väčšina stavov zodpovedá rýchlym operáciám, pokiaľ vlákno zostáva v rovnakom stave niekoľko sekúnd, môže nastať problém, ktorý je potrebné skontrolovať.
 Prenajímateľ| Zverejnené 1. 3. 2019 10:26:49 |
 Prenajímateľ| Zverejnené 1. 3. 2019 10:34:13 |


Dotaz na dáta trvá 10 sekúnd.
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com