Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 15232|Odpověď: 3

[Zdroj] MySQL CPU 100% vysoké řešení

[Kopírovat odkaz]
Zveřejněno 11.10.2018 11:20:31 | | | |
Otevřete správce úloh serveru a zjistíte, že CPU proces byl vždy na 99 % a pohled je obsazen procesem mysql, který byl vysoký.


Výstup příkazu processlist ukazuje, která vlákna běží, a můžete zkontrolovat aktuální stav databáze.

1. Přejděte do adresáře mysql/bin a zadejte mysqladmin processlist;
2. Spusť mysql a zadej zobrazit processlist.
Pokud máte SUPER oprávnění, můžete vidět všechna vlákna, jinak vidíte jen vlákna svého účtu.





Význam a účel každého sloupce

id: Identifikátor
user: zobrazuje aktuálního uživatele, pokud není root, tento příkaz zobrazí pouze SQL příkazy v rámci vašich oprávnění.
host: ukazuje, z jaké IP adresy toto tvrzení pochází z jakého portu
db: Zobrazuje databázi, ke které je proces aktuálně připojen.
příkaz: Zobrazuje příkazy provedené aktuálním připojením, obvykle usnutí, dotazování a připojení.
čas: Doba, kdy tento stav trvá, v sekundách.
stav: Zobrazuje stav SQL příkazu, který používá aktuální spojení, ale při vykonání příkazu byl dotazován pouze určitý stav, SQL příkaz, například může být potřeba projít tabulkou kopírování do tmp, tříděním výsledků, odesíláním dat atd
info: Zobrazuje tento SQL příkaz, protože délka je omezená, takže dlouhý SQL příkaz není plně zobrazen, ale je důležitým základem pro posouzení zadání problému.


Zjistilo se, že existují dva SQL dotazy, které trvají nejdéle a nebyly vykonány déle než 1000 sekund, a SQL příkazy, které jsme zkopírovali z info pole, jsou společným dotazem, a to následovně:

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

Proces těchto dvou dotazových příkazů zabijeme

Po deseti sekundách čekání jsem zjistil, že CPU hodně kleslo, ale stále bylo velmi vysoké, a budu dál zkoumat příčinu!



Pro join joint dotaz přidejte index do příslušného pole nebo upravte kód programu dotazu.
Vytvořte SQL příkaz indexu

Konec





Předchozí:Přihlášení do Wordpressu v C#
Další:Úprava metody mapování portů pro docker kontejnery
 Pronajímatel| Zveřejněno 11.10.2018 13:03:02 |
Nejkritičtější z tohoto příkazu je sloupec stavů, přičemž stavy uvedené v mysql jsou převážně následující:

Kontrolní stůl  
  Kontrola datasheetu (to je automatické).  
  Závěrečné stoly  
  Data upravená v tabulce jsou přenášena na disk a spotřebovaná tabulka se uzavírá. Je to rychlá operace, pokud ne, měli byste zkontrolovat, jestli je místo na disku plné nebo jestli je disk pod zátěží.  
  Connect Out  
  Replikační slave server se připojuje k primárnímu serveru.  
  Kopírování do tmp tabulky na disku  
  Protože dočasná sada výsledků je větší než tmp_table_size, dočasná tabulka je převáděna z paměťového úložiště na diskové úložiště za účelem úspory paměti.  
  Vytváření tabulky tmp  
  Vytváří se dočasná tabulka, která uchovává některé výsledky dotazů.  
  Mazání z hlavní tabulky  
  Server provádí první část vícestolečného mazání a právě smazal první tabulku.  
  mazání z referenčních tabulek  
  Server provádí druhou část mazání více tabulek, což je mazání záznamů z jiných tabulek.  
  Splachovací tabulky  
  Dělám FLUSH TABLES, čekám, až ostatní vlákna datatable uzavřou.  
  Zabit  
  Pokud je žádost o zabití odeslána vláknu, vlákno zkontroluje vlajku zabití a opustí další žádost o zabití. MySQL kontroluje zastavení v každé hlavní smyčce, i když v některých případech může vlákno na krátkou dobu přestat fungovat. Pokud je vlákno zamčeno jiným vláknem, požadavek na ukončení najde účinnost okamžitě, jakmile je zámek uvolněn.  
  Zamčeno  
  Zamčeno jinými dotazy.  
  Odesílání dat  
  Záznam dotazu SELECT je zpracováván, zatímco výsledky jsou odesílány klientovi.  
  Třídění pro skupinu  
  Třídění pro SKUPINU PO.  
  Třídění podle pořadí  
  Třídění probíhá pro ORDER BY.  
  Otevírací tabulky  
  Tento proces by měl být rychlý, pokud do toho nezasahují jiné faktory. Například datová tabulka nemůže být otevřena jiným vláknem, dokud není vykonán příkaz ALTER TABLE nebo LOCK TABLE. Snažím se otevřít stůl.  
  Odstraňování duplikátů  
  Provádí se dotaz SELECT Distinct, ale MySQL nedokáže optimalizovat duplicitní záznamy v předchozí fázi. Proto musí MySQL před odesláním výsledků klientovi duplicitní záznamy znovu odstranit.  
  Znovu otevřít stůl  
  Na tabuli je dosaženo zámku, ale po úpravě struktury tabulky jej je nutné upravit. Už jsem uvolnil zámek, zavřel datasheet a snaží se datatable znovu otevřít.  
  Oprava tříděním  
  Instrukce fix je třídění pro vytvoření indexu.  
  Oprava pomocí keycache  
  Fix Directive spočívá v používání indexové cache k vytváření nových indexů jeden po druhém. Bude to pomalejší než oprava díky třídění.  
  Vyhledávání řádků pro aktualizaci  
  Způsobilé záznamy jsou identifikovány pro aktualizace. Musí to být provedeno dříve, než AKTUALIZACE upraví příslušný záznam.  
  Spí  
  Čekání, až klient pošle nový požadavek.  
  Systémový zámek  
  Čekám na získání externího systémového zámku. Pokud současně neběží žádné mysqld servery požadující stejnou tabulku, lze externí systémové zámky zakázat přidáním parametru –skip-external-lock.  
  Modernizační zámek  
  INSERT DELAYED se snaží přimět lock table, aby vložil nový záznam.  
  Aktualizace  
  Hledání shodných záznamů a jejich úprava.  
  Uživatelský zámek  
  čeká na GET_LOCK().  
  Obsluha stolů  
  Vlákno bylo informováno, že struktura datasheetu byla upravena a je třeba ji znovu otevřít, aby získala novou strukturu. Pak, abyste mohli datovou tabulku znovu otevřít, musíte počkat, až všechna ostatní vlákna tabulku uzavře. Toto oznámení se objevuje v následujících případech: FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE nebo OPTIMIZE TABLE.  
  Čekání na vložení handlera  
  INSERT DELAYED zpracoval všechny čekající vložené položky a čeká na nový požadavek.  
  Většina stavů odpovídá rychlým operacím, pokud vlákno zůstane ve stejném stavu několik sekund, může nastat problém, který je třeba zkontrolovat.
 Pronajímatel| Zveřejněno 01.03.2019 10:26:49 |
 Pronajímatel| Zveřejněno 01.03.2019 10:34:13 |


Dotaz na datový údaj trvá 10 sekund.
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com